Windowsでシンボリックリンクを作る

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はショートカットになります。)

WS000001

注意点

LinuxやMacにてシンボリックリンクを作成する際に用いるln コマンドとはリンクと実体の書き順が逆になります。

PRすべてのAWSが5%オフ