No Programming, No Life

プログラミング関連の話題や雑記

Windowsでもシンボリックリンクが使える話

f:id:fumokmm:20191121224631p:plain

(illust by いらすとや)

実は

WIndows7のころから、実はWindowsでもシンボリックリンクが使えるようになっていた。現場ではあまり実用されているところにお目にかかったことがないのだが、色んなフォルダから同じファイルをツツきたいなと思い、ふとWindowsでもそういえばシンボリックリンクが使えるんじゃなかったっけ?と思い出した次第。

MKLINKコマンド

早速ですが構文を示す。こちらを参考。

mklink [[/d] | [/h] | [/j]] <Link> <Target>

このメイクリンク(と読むのかな?)コマンドはシンボリックリンクハードリンク、あとジャンクションが作成できる。ん?ジャンクションって何だ?詳しい説明は参考にしたサイトを見てほしい。簡単に言うと、シンボリックリンクと同じようなものだ。 ハードリンクはまぁちょっと考え方が違うので、また別の機会に記事にでもするとして、今回はシンボリックのお話。

ファイルのシンボリックリンク

mklink <シンボリックリンク名> <ファイルへのパス>

ファイルの場合はオプション要らない。

フォルダのシンボリックリンク

mklink /d <シンボリックリンク名> <ファイルへのパス>

ディレクトリの場合は/dオプションを付ける。

なお、ファイルへのパスは相対参照でも絶対参照でもいけるみたい。

例 (Win10で試したところ)

以下は、現在のバージョンのJDKのフォルダを指すシンボリックリンクC:\tempに作成する例だ。C:\tempに移動してから以下のようにする。

mklink /d java-currentver "C:\Program Files\Java\jdk-13.0.1"

なお、コマンドプロンプトは管理者権限で実行する必要がある。Win + Rcmdと打って、Ctrl + Shift + Enterで管理者権限でコマンドプロンプトが立ち上がる。

f:id:fumokmm:20191121232659p:plain

出来上がったシンボリックリンクを見た目はショートカットと同じ f:id:fumokmm:20191121232703p:plain

中に入ってみると、tempの下にjava-currentverがあるように見える。 f:id:fumokmm:20191121232704p:plain

参考にしたサイト

docs.microsoft.com

dev.classmethod.jp

www.atmarkit.co.jp

qiita.com