1. 程式人生 > >解決 mklink 使用中的各種坑(硬連結,軟連結/符號連結,目錄連結)

解決 mklink 使用中的各種坑(硬連結,軟連結/符號連結,目錄連結)

通過 mklink 命令可以建立檔案或資料夾的連結,而這種連結跟快捷方式是不一樣的。然而我們還可能會遇到其使用過程中的一些坑,本文將整理這些坑並提供解決方法。

mklink 可以像建立快捷方式一樣建立檔案或資料夾的連結,但不同於快捷方式的是,mklink 建立的連結絕大多數程式都不會認為那是一個連結,而是一個實實在在的檔案或資料夾。

例如,為 D:\OneDrive\Foo 資料夾建立連結到 D:\Foo,那麼 D:\OneDrive\Foo 中有一個 .git 檔案時,絕大多數程式都會以為 D:\Foo 中也存在 .git 檔案,而且檔案內容一模一樣。

mklink 可以建立符號連結、硬連結和目錄連結。在 cmd 中輸入 mklink 即可看到以下這樣的幫助資訊。

C:\Users\lvyi>mklink
建立符號連結。

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      建立目錄符號連結。預設為檔案
                符號連結。
        /H      建立硬連結而非符號連結。
        /J      建立目錄聯接。
        Link    指定新的符號連結名稱。
        Target  指定新連結引用的路徑
                (相對或絕對)。

具體的使用不是本文的重點,可以閱讀本文末尾的參考資料瞭解,這裡只給出他們之間的大體區別。

使用方式 適用於 快捷方式小箭頭
不帶引數 檔案
/D 資料夾
/J 資料夾
/H 檔案

上面的表格順序,從上到下的行為從越來越像快捷方式到越來越像兩個獨立的資料夾。

是的,PowerShell 中就是中沒有 mklink 命令。如果要在 powershell 中使用 mklink,那麼得先敲 cmd 進入 cmd 之後再使用 mklink

命令。

0x02 坑:許可權

預設我們的使用者賬戶是 Administrators 組的,會繼承它的許可權設定。正常情況下,我們使用 mklink 是可以成功執行的。但如果檔案系統的設定比較奇怪或者重灌過系統,那麼可能出現沒有許可權的錯誤。

C:\Users\lvyi>mklink /D D:\Foo D:\OneDrive\Foo
你沒有足夠的許可權執行此操作。

這時,使用管理員許可權啟動 cmd 是最簡單的做法。不過也可以考慮在 本地安全策略(secpol.msc)\本地策略\使用者權利分配 中添加當前使用者。

參考連結