Windows
command
bat
コマンドプロンプト
ln

Windowsでシンボリックリンク作成@非管理者権限環境

More than 1 year has passed since last update.

Windowsでは、シンボリックリンクの作成にmklinkコマンドを使います。

ファイルの場合
>mklink LINK_NAME TARGET
ディレクトリの場合
>mklink /D LINK_NAME TARGET

ただし、これは管理者権限で起動したコマンドプロンプトの上で実行する 必要があります か、あるいは事前にポリシーを変更しておく必要があります(20160313コメント反映@asm さんありがとうございます)。ポリシーを変更しない場合、リンクを貼る際に毎度管理者権限でコマンドプロンプトを起動するのは面倒です。

管理者権限で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に一例置いておきました。

batファイルの例

前処理の内容

  • LINK_NAMETARGETの順番を入れ替え(UNIX系のlnコマンドの順番にあわせた)
  • 渡された引数がファイルかディレクトリかを判別して/Dオプションを自動で付加

使い方

> ln-s TARGET LINK_NAME