豚吐露@wiki

シンボリックリンクを使いたい

最終更新:

Bot(ページ名リンク)

- view
管理者のみ編集可

Windowsでもシンボリックリンクを使いたい

Windows 7
※Windows Vista以降のOSで対応
Windows10(64bit) Pro 21H2(19044.1826)

LinkShellExtensionを使う方法 ※Windows環境だと一番オススメ

licence
license.txt
読む限り、商用free。
プログラムの改変や、他のプログラムへの埋め込みとかしなければ問題無い模様。

install
chocoを用いたinstall
GUIでシンボリックリンクを使いたい人は、chocoを使って『LinkShellExtension』を入れるのが手っ取り早い。
※wingetじゃ見つからんかった...
chocoを入れたくないって人は読み飛ばして、通常installの方参照してください。

コマンドプロンプトを右クリックして、『管理者として実行』を選択。以下のコマンドを実行する。
> choco install linkshellextension
+ log
Chocolatey v1.1.0
Installing the following packages:
linkshellextension
By installing, you accept licenses for the packages.

vcredist2017 v14.16.27033 [Approved]
vcredist2017 package files install completed. Performing other installation steps.
The install of vcredist2017 was successful.
 Software installed to 'C:\ProgramData\chocolatey\lib\vcredist2017'

LinkShellExtension v3.9.3.5 [Approved]
linkshellextension package files install completed. Performing other installation steps.
The package LinkShellExtension wants to run 'chocolateyInstall.ps1'.
Note: If you don't run this script, the installation will fail.
Note: To confirm automatically next time, use '-y' or consider:
choco feature enable -n allowGlobalConfirmation
Do you want to run the script?([Y]es/[A]ll - yes to all/[N]o/[P]rint): y

Downloading Link Shellextension 64 bit
 from 'https://schinagl.priv.at/nt/hardlinkshellext/save/3935/HardLinkShellExt_X64.exe'
Progress: 100% - Completed download of C:\Users\【User】\AppData\Local\Temp\chocolatey\LinkShellExtension\3.9.3.5\HardLinkShellExt_X64.exe (3.21 MB).
Download of HardLinkShellExt_X64.exe (3.21 MB) completed.
Hashes match.
Installing Link Shellextension...
Link Shellextension has been installed.
 linkshellextension may be able to be automatically uninstalled.
The install of linkshellextension was successful.
 Software installed as 'exe', install location is likely default.

Chocolatey installed 2/2 packages.
See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).
successfulとか出たらok。

通常のinstall
chocoを入れれない。or 入れたくない。って人は、以下からinstallerをdownload。
https://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html#download

以下のurlでそれぞれdownload可能。
x64版
x32版

downloadしたら、installerを実行。
install時のoptionは、"install path"しかないので、defaultでok。

使い方
fileの場合
以下のようなシンボリックリンクを作りたい場合。
リンク先path _tmp/hoge/hoge.txt
シンボリックリンク _tmp/fuga/hoge.txt

hoge.txtを右クリックして『リンク元として選択』を押下。リンク先となるfileを指定する。

シンボリックリンクを作りたい場所、『_tmp/fuga』フォルダを選択して、右クリック『リンクを作成』から『シンボリックリンク』を選ぶ。

名前はリンク元と同じになるので、renameしたい場合は、自力で変更が必要。
fileのプロパティでは、リンクタブがあるくらいしかショートカットと区別がつかないが...

エクスプローラで詳細表示すると種類が『.symlink』になるので分かりやすい。

folderの場合
以下のようなシンボリックリンクを作りたい場合。
リンク先path _tmp/fuga
シンボリックリンク _tmp/hoge/fuga

fileのときと同じようにリンク元を指定。

fileのときと同じようにシンボリックリンクの作成を選択。
c.f.) ジャンクションとかの違いはこちら参照

出来上がるとこんな感じ。

フォルダの場合は、見た目ショートカットで種別がフォルダーになってるトコで区別する。
ちなみに、同名のfileがあると『 - シンボリックリンク』が付与される。

mklink

Vista以降ではシンボリックリンクを作るコマンド『mklink』が用意されている。が、上記LinkShellExtensionを使った方が使い勝手が良い。
※XP以前ではジャンクションを使うことでシンボリックリンクと同等の機能を得られる。

GUI環境での設定手段は用意されていないので、コマンドプロンプトからの操作が必要。
また、シンボリックリンクを作るには管理者権限が必要みたいなので、一般ユーザで作成しようとすると...
> mklink /d piyo hoge
この操作を実行するのに十分な特権がありません。
とかって怒られる。
なので、メニュー等からコマンドプロンプトを実行するときに、右クリックからの『管理者として実行』を選択して起動したコマンドプロンプトでないと実行できないので注意。

管理者権限で起動して以下のように実行するとディレクトリのシンボリックリンクを作れる。

リンク先path hoge
シンボリックリンク名 piyo

> mklink /d piyo hoge
piyo <<===>> hoge のシンボリック リンクが作成されました
dirコマンドで見てみると
2014/01/23  12:34    <SYMLINKD>     piyo [hoge]
ってな感じに表示される。
ファイラ(Explorerとかのことね)から見るとただのフォルダのショートカットとして見えるが、あたかもサブフォルダのように扱われてることが分かると思う。

ちなみに、『/d』の有無はあまり意味が無いみたい。
作られるリンクのアイコンがファイルになるかフォルダになるかの違いだけかも。
『/d』付けないでフォルダのシンボリックリンク作っても、ちゃんとフォルダとして振る舞ってくれてた。

作成に管理者権限が必要なのがちょっとめんどくさいけど、ネットワーク上のフォルダやファイルなどにもリンクを貼れるので、ジャンクションより便利。オススメです。

ジャンクション、シンボリックリンク、ハードリンクの違いは以下に詳しく書いてありました。
http://www.atmarkit.co.jp/ait/articles/1306/07/news111.html


一応参考までに
■作り方
hogeってファイルへのシンボリックリンクpiyoを作る
hogeってフォルダへのシンボリックリンクpiyoを作る
hogeってフォルダへのハードリンクpiyoを作る
hogeってフォルダへのジャンクションpiyoを作る
mklink piyo hoge
mklink /d piyo hoge
mklink /h piyo hoge
mklink /j piyo hoge
■消し方
ファイルへのシンボリックリンクpiyoを消す
フォルダへのシンボリックリンクpiyoを消す
フォルダへのハードリンクpiyoを消す
フォルダへのジャンクションpiyoを消す
del piyo
rmdir piyo
del piyo
rmdir piyo
※『フォルダへのシンボリックリンク』や『ジャンクション』にdelコマンドを使って削除を行うと、リンク先のフォルダ内のファイルが削除されちゃうので注意。また、ゴミ箱に投げ捨てるのも危険なので要注意!
必ずコマンドプロンプトから上記コマンドで削除するようにすること!!

参考までにコマンドのヘルプ。
>mklink /?
シンボリック リンクを作成します。
 
MKLINK [[/D] | [/H] | [/J]] リンク ターゲット
 
        /D          ディレクトリのシンボリック リンクを作成します。既定では、
                    ファイルのシンボリック リンクが作成されます。
        /H          シンボリック リンクではなく、ハード リンクを作成します。
        /J          ディレクトリ ジャンクションを作成します。
        リンク      新しいシンボリック リンク名を指定します。
        ターゲット  新しいリンクが参照するパス (相対または絶対)
                    を指定します。
 


シンボリックリンクをcopyしたら、リンク先のdirectoryが丸っとcopyされた...
移動だとシンボリックリンク自体が移動されるんですが、copyはダメらしい。
逐次作るしかないのか?


更新日: 2023年06月16日 (金) 16時24分53秒

名前:
コメント:

すべてのコメントを見る
記事メニュー
ウィキ募集バナー