akishin999の日記

調べた事などを書いて行きます。

WindowsXP でシンボリックリンク

Windows で開発をしている場合に、本番環境の Linux などと同じようなディレクトリ構成を取るために、シンボリックリンクを貼りたくなる場合があります。


Windows Vista からは、mklink.exe が含まれるようになり、シンボリックリンクが使えるようになりましたが、XP にはこのツールは含まれていません。

ちなみに mklink でシンボリックリンクを作成するには、コマンドプロンプトを管理者として起動して、以下のように実行します。

mklink /d <シンボリックリンク名> <実フォルダのフルパス>


XP の場合は、シンボリックリンクがないようなので、ファイルの場合はハードリンク、ディレクトリの場合はジャンクションというものを作成します。

ハードリンクは以下のようにして作成できます。

fsutil hardlink create <ハードリンク名> <実ファイルのパス>


例えば、vim を vi として起動したい、といった場合、以下のように vim.exe のハードリンクとして vi.exe を作成します。

fsutil hardlink create vi.exe vim.exe


ディレクトリに対してジャンクションを作成する場合、リソースキットに含まれる linkd.exe が必要となるのですが、インストールが面倒なので、私は以下の Link Shell Extension というツールを使用しています。


窓の杜 - 【REVIEW】エクスプローラ上で手軽にシンボリックリンクを作成「Link Shell Extension」
http://www.forest.impress.co.jp/article/2008/12/11/linkshellext.html


リンクを張りたいフォルダの上で右クリックして「Pick Link Source」を選択。
何も反応はないのですが、そのまま今度はリンクファイルを作成したい場所で右クリックし、「Drop As...」→「Junction」で先ほど選択したフォルダに対するジャンクションが作成されます。
(※ 現在のバージョンではインストール時に日本語も選択可能となっているようです。)


作成されたジャンクションは Linux 上でのディレクトリへのシンボリックリンクと同様に扱えます。

参考

@IT:Windows XPの正体 強化されたコマンドライン・ツール(中編) 2.ディスク/ファイル関連ツール(2)
http://www.atmarkit.co.jp/fwin2k/xp_feature/013commandtool/commandtool3.html


ジャンクション機能を使ってフォルダをマウントする − @IT
http://www.atmarkit.co.jp/fwin2k/win2ktips/991fjunction/fjunction.html