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

 

經過 mklink 命令能夠建立文件或文件夾的連接,而這種連接跟快捷方式是不同的。然而咱們還可能會遇到其使用過程當中的一些坑,本文將整理這些坑並提供解決方法。html


 

0x00 背景介紹:mklink

mklink 能夠像建立快捷方式同樣創建文件或文件夾的連接,但不一樣於快捷方式的是,mklink 建立的連接絕大多數程序都不會認爲那是一個連接,而是一個實實在在的文件或文件夾。git

例如,爲 D:\OneDrive\Foo 文件夾建立連接到 D:\Foo,那麼 D:\OneDrive\Foo 中有一個 .git 文件時,絕大多數程序都會覺得 D:\Foo 中也存在 .git 文件,並且文件內容如出一轍。shell

mklink 能夠建立符號連接、硬連接和目錄連接。在 cmd 中輸入 mklink 便可看到如下這樣的幫助信息。windows

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

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

        /D      建立目錄符號連接。默認爲文件
                符號連接。
        /H      建立硬連接而非符號連接。
        /J      建立目錄聯接。
        Link    指定新的符號連接名稱。
        Target  指定新連接引用的路徑
                (相對或絕對)。

具體的使用不是本文的重點,能夠閱讀本文末尾的參考資料瞭解,這裏只給出他們之間的大致區別。安全

使用方式 適用於 快捷方式小箭頭
不帶參數 文件
/D 文件夾
/J 文件夾
/H 文件

上面的表格順序,從上到下的行爲從愈來愈像快捷方式到愈來愈像兩個獨立的文件夾。函數

0x01 坑:PowerShell 中沒有 mklink 命令

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

若是你是一個重度強迫症患者,那麼能夠編寫一個 powershell 的擴展函數來實現:Creating a Symbolic Link using PowerShell - Learn Powershell - Achieve Morespa

0x02 坑:權限

默認咱們的用戶帳戶是 Administrators 組的,會繼承它的權限設定。正常狀況下,咱們使用 mklink 是能夠成功執行的。但若是文件系統的設置比較奇怪或者重裝過系統,那麼可能出現沒有權限的錯誤。.net

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

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


參考連接

相關文章
相關標籤/搜索