解決 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 命令。

如果你是一個重度強迫症患者,那么可以編寫一個 powershell 的擴展函數來實現:Creating a Symbolic Link using PowerShell - Learn Powershell - Achieve More

0x02 坑:權限

默認我們的用戶賬戶是 Administrators 組的,會繼承它的權限設定。正常情況下,我們使用 mklink 是可以成功執行的。但如果文件系統的設置比較奇怪或者重裝過系統,那么可能出現沒有權限的錯誤。

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

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


參考鏈接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM