經過 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 More。spa
0x02 坑:權限
默認咱們的用戶帳戶是 Administrators
組的,會繼承它的權限設定。正常狀況下,咱們使用 mklink
是能夠成功執行的。但若是文件系統的設置比較奇怪或者重裝過系統,那麼可能出現沒有權限的錯誤。.net
C:\Users\lvyi>mklink /D D:\Foo D:\OneDrive\Foo 你沒有足夠的權限執行此操做。
這時,使用管理員權限啓動 cmd
是最簡單的作法。不過也能夠考慮在 本地安全策略(secpol.msc)\本地策略\用戶權利分配
中添加當前用戶。code