Windowsでシンボリックリンクを作る
206件のシェア(すこし話題の記事)
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
会社の飲み会にて、
Windowsはシンボリックリンクが作れないからなぁ、みたいな話になったので
Windowsでシンボリックリンクを作れることをまとめました。
作り方
Windowsでシンボリックリンクを作るにはmklinkコマンドを使います。
Windows7 x64・Windows8 x64で確認しましたが入っておりました。
コマンドプロンプトからmlinkと入力することで使い方も表示されます。
1 2 3 4 5 6 7 8 9 10 11 | C:\Users>mklink シンボリック リンクを作成します。 MKLINK [[ /D ] | [ /H ] | [ /J ]] リンク ターゲット /D ディレクトリのシンボリック リンクを作成します。 既定では、ファイルのシンボリック リンクが作成されます。 /H シンボリック リンクではなく、ハード リンクを作成します。 /J ディレクトリ ジャンクションを作成します。 リンク 新しいシンボリック リンク名を指定します。 ターゲット 新しいリンクが参照するパス (相対または絶対)を指定します。 |
ショートカットじゃなくて?ともいわれたので 簡単な検証もしてみたいと思います。
手順
想定としては以下を想定します。
- E:\log にログファイルを保存したい。
- アプリケーション自体はC:\Appにあり、アプリケーションからはC:\App\logをログ書き出しフォルダとして指定したい。
コマンドプロンプトを管理者権限で起動します。
これは、コマンドプロンプトを通常に立ち上げただけでは、
C:\app\logといったシンボリックリンクを作成する権限がないためです。
mklinkコマンド自体はユーザー権限で実行することが可能です。
シンボリックリンクを作成します。
以下のコマンドを入力し作成されることを確認します。
1 2 | C:\Windows\system32>mklink /D C:\app\log e:\log C:\app\log <<===>> e:\log のシンボリック リンクが作成されました。 |
シンボリックリンクの挙動を確認
C:\app\logに対してファイルを作成し、実態がE:\logにあることを確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | C:\Windows\system32>fsutil file createnew c:\app\log\logfile.log 2048 ファイル c:\app\log\logfile.log が作成されました C:\Windows\system32> dir C:\app\log C:\app\log のディレクトリ 2014 /04/23 00:12< dir >. 2014 /04/23 00:12< dir >.. 2014 /04/23 00:12 2,048 logfile.log 1 個のファイル 2,048 バイト C:\Windows\system32> dir E:\log E:\log のディレクトリ 2014 /04/23 00:12< dir >. 2014 /04/23 00:12< dir >.. 2014 /04/23 00:12 2,048 logfile.log 1 個のファイル 2,048 バイト |
なお、シンボリックリンクアイコンは下記のようになります。
比較として、ショートカットのアイコンも配置してあります。
(log_scはショートカットになります。)
注意点
LinuxやMacにてシンボリックリンクを作成する際に用いるln コマンドとはリンクと実体の書き順が逆になります。