Windowsでは、シンボリックリンクの作成にmklink
コマンドを使います。
ファイルの場合
>mklink LINK_NAME TARGET
ディレクトリの場合
>mklink /D LINK_NAME TARGET
ただし、セキュリティ上の配慮から、無制限には実行できず、以下のいずれかの対応が必要です。
- 管理者権限で起動したコマンドプロンプトの上で実行する
- 事前にポリシーを変更しておく(20160313コメント反映 @asm さんありがとうございます)1
- 事前に開発者モードを有効にしておく2
グローバルな設定に触りたくない場合、リンクを貼る際に毎度管理者権限でコマンドプロンプトを起動せねばならず面倒です。
管理者権限でmklinkを実行する
powershellを使います。
powershellでは、Start-Process
コマンドに-Verb Runas
オプションを指定することで、指定したコマンドを管理者権限で実行できます(実行時にUACの画面が出ます)。
そこで、以下のコマンドを用いることで、管理者権限でコマンドプロンプトを起動し直すことなくmklinkを実行することが出来ます。
powershell.exe -Command Start-Process -FilePath "cmd" -ArgumentList "/c","mklink","LINK_NAME","TARGET" -Verb Runas
処理をbatファイルにまとめる
上記のコマンドは、とても毎度タイプ出来る長さではないので、前処理などを含めてbatファイルにまとめ、パスの通ったディレクトリに設置します。Gistに一例置いておきました。
20190326追記
@cat2151 さんが、上記例をよりロバストに改良してくださいました。ありがとうございます。
batファイルの例
前処理の内容
-
LINK_NAME
とTARGET
の順番を入れ替え(UNIX系のln
コマンドの順番にあわせた) - 渡された引数がファイルかディレクトリかを判別して
/D
オプションを自動で付加
使い方
> ln-s TARGET LINK_NAME