Windowsで拡張子が.symlinkのシンボリックリンクを作成する方法です。
Windowsでは“ショートカット”がGUIから簡単に作れて優秀なので有名ですが、コマンドプロンプトを使えばシンボリックリンクも作成可能です。
シンボリックリンクはOSのファイル管理機能の1つなので、システムファイル等の保存先を別の場所(ドライブ)に移動したい時に作成すれば便利です。
この記事ではWindows10の環境でコマンドプロンプトを使って作成します。
(Windows11でも全く同じ手順でシンボリックリンクが作れます。)
この記事の目次
Windows:シンボリックリンク(.symlink)の作り方
WindowsはGUIでの操作がメインになっており、あるフォルダやファイルを別の場所から参照したい場合にはショートカットが良く使われますが、シンボリックリンクやハードリンクというものも作成できます。
このシンボリックリンクという言葉は、LinuxなどのCUI操作がメインのOSでよく出る話らしいですが、Windowsでもシステムファイルの保存先を別の場所に変更したい時などに使われます。
Windowsには「ショートカット」という機能があるので、シンボリックリンクは結構マニアックな使い方にはなりますが、Cドライブにデータがあるようにしつつ、実際の保存先はDドライブといったことをするには「シンボリックリンク」が必須です。
記事の前半は基本的な作り方をサクッと。記事の後半では実際に使う時に参考になりそうな具体例を元に、シンボリックリンクの作り方・使い方をご案内します。
はじめに
この記事では、Windowsのコマンドプロンプトを使ってシンボリックリンク(拡張子が.symlink)を作成する方法をご紹介します。作成方法がメインなので各リンクの詳しい説明は割愛しています。予めご了承下さい。
準備:シンボリックリンクに必要なパスの確認
シンボリックリンクを作成する前に、まず作成したいファイルやフォルダへのパス(場所)と、どこにシンボリックリンクを作成するのかを確認しておきましょう。
GUI操作ではなくコマンド操作になるので、パスの事前確認は大切です。
例として、この記事では以下のファイル構成で作業を進めていきます。
- シンボリックリンクのリンク先:Cドライブ>myfolder>test.txt
- 新しく作るシンボリックリンク:Dドライブ>tempフォルダ内
今回はCドライブ内に作った「myfolder」というフォルダ内にある「text.txt」というテキストファイルに対して、新しくシンボリックリンクを作成してみます。
さらに新規作成するシンボリックリンクの保存先として、Dドライブ内に「temp」というフォルダを作成しておきました。
コマンドプロンプトからシンボリックリンクを作る方法
パスを確認したら、早速シンボリックリンクを作成してみます。
Windowsでシンボリックリンクを作成するには、コマンドプロンプトで「mklink」というコマンドを使います。
コマンドプロンプトを管理者権限で実行する
後述しますが、mklinkコマンドは管理者権限でしか基本実行できません。
なのでコマンドプロンプトを管理者として実行しましょう。
コマンドプロンプトを管理者権限で実行できればどこから開いてもOK!
ここではデスクトップ画面左下にある検索欄から開きました。
mklinkコマンドでシンボリックリンクを作成する
mklinkコマンドの構文は以下のような感じです。
mklink オプション リンク名 ターゲット
これは後述するのでとりあえず挙動を見ていただければと思います。
リンク先が「C>myfolder>test」となる「newlink」という名のシンボリックリンクを「D>temp」フォルダ内に作成するためのコマンドは以下のようになります。
これはドライブD:にC:から呼び出す新しいシンボリックリンクを作る感じです。
ここでは良く使うであろうCドライブのデータをDドライブに移す時とは逆の例になる点にご注意下さい。作り方なので参考例です。(C→Dは後述)
cmd
mklink d:¥temp¥newlink c:¥myfolder¥test
上記のコマンドを実行すると
d:¥temp¥newlink <<===>> c:¥myfolder¥test のシンボリック リンクが作成されました
と出ます。これでシンボリックリンクが作成されました。
mklinkコマンドにオプションを指定していなければ、素の「.symlink」になります。
このディレクトリではない素の「.symlink」は、何かのソフトのプログラムファイル(拡張子.xxx)のシンボリックリンクを作成したい時に使えると言えます。
ディレクトリのシンボリックリンクを作る場合
ディレクトリ(ファイル)のシンボリックリンクを作りたい時は、mklinkコマンドに「/D」というオプションを指定します。
先ほどのコードだと以下のようになります。
cmd mklink /D d:¥temp¥newlink c:¥myfolder¥test
/Dを指定してコマンドを実行すると…
ディレクトリのシンボリックリンクが作成されました。
このように必要に応じてオプション(詳しくは後述)を指定することができます。
先程の素の「.symlink」はファイルが単体の場合に使うのに対し、このディレクトリのシンボリックリンクは、フォルダごとデータを移動したい時に使えると言えます。
シンボリックリンクの具体的な使い方
ここまではシンボリックリンクの基本的な作り方を見てきましたが、イマイチ内容が伝わりにくかったと思います...。
ということでここから先は、実際にシンボリックリンクを使用して(C:)ドライブにあるデータの保存先を(D:)ドライブに移動する方法をご紹介します。
1からシンボリックリンクを作るのではなく、既に存在しているファイル/フォルダに対してシンボリックリンクを設定するやり方です。需要があるのはコチラでしょう。
C:ドライブ内にある「音楽」というフォルダに対してシンボリックリンクを作成し、実際の保存先がC:ドライブではなくD:ドライブになるように変更してみます。
保存先を移動したい「音楽」フォルダのプロパティを開いた画面が上の画像です。
当然ですが、場所はC:¥となっています。これをD:¥に変更してみましょう。
フォルダの保存先をCからDに変更する方法
既にCドライブ内に保存されているデータの保存先を、シンボリックリンクを使用してDドライブに変更したい場合、シンボリックリンクは以下の流れで作ります。
- Cドライブ内のデータをフォルダごと“切り取り”する。
- Dドライブ内に切り取ったフォルダを“貼り付け”する。
- Cドライブ ⇔ Dドライブとなるようにシンボリックリンクを作成する。
後述しますが、既に存在するフォルダに対してシンボリックリンクを作成することは出来ないので、1度Cドライブから目的のフォルダを無くす必要があるのです。
(フォルダを削除しても良いが、ややこしいので切り取り&貼り付けがお勧め。)
では順番にやっていきましょう・w・
①.保存先を変更したいフォルダを切り取る
まずはCドライブにある「保存先を変更したいフォルダ」を“切り取り”ます。
今回は「音楽」フォルダの保存先をCからDに移動したいのでこちらを切り取り。
②.新たな保存先にフォルダを貼り付ける
続いてDドライブ内にCドライブから切り取った「音楽」フォルダを“貼り付け”ます。
移動したい物にもよりますが、ここまでは単なる移動で簡単ですね。
コピペでフォルダをCドライブからDドライブに移動したら準備完了!
③.C⇔Dとなるシンボリックリンクを作る
続いてCドライブ内に「音楽」という名前でシンボリックリンクを作成します。
今回の場合シンボリックリンクの作成コマンドは以下のようになります。
mklink /D "C:¥音楽" "D:¥音楽"
これでCドライブ内に「音楽」という名前のシンボリックリンクが作成されます。
ややこしいですが、後ろの"D:¥音楽"は新しい保存先の「音楽」フォルダです。
ポイント
ファイルの場所(パス)が良く分からないなら、該当ファイル名を右クリックし「パスのコピー」を押せば簡単にパスをクリップボード内にコピーできます。
これをメモ帳などに貼り付けて確認しましょう。
シンボリックリンクが作成されたか確認
最後に無事にシンボリックリンクが作成されたか確認しましょう。
Cドライブを開くと...
「音楽」という名前のシンボリックリンクが作成されています。
そしてこのプロパティを確認すると、場所が“D:¥”になっていることが分かります。
こうしておくと何かのソフトで「C:>音楽」内に音楽ファイルを保存したとしても、実際にはD:ドライブ内に保存されるようになっています。
iTunesなど、データの保存先が変更できないソフトでもシンボリックリンクを使えば保存先を別のドライブに変更することが出来たりもします。
mklinkコマンドの構文とオプション
ここまでシンボリックリンクを作成するにあたって「/D」というオプションをメインに使ってきましたが、mklinkには他のオプションもあります。
mklinkコマンドの構文とオプションの早見表は以下です。
mklinkの構文
MKLINK [[/D] | [/H] | [/J]] リンク ターゲット
これを分かりやすく書くと以下のようになりますね。
mklink オプション 作成する場所とリンク名 本体のファイルパス
必要ならオプションを指定後、シンボリックリンク(.symlink)のパスと名前、その後にリンクしたいファイルやフォルダのパスを指定する感じです。
さらに実用時に分かりやすいように書くと以下です。
mklink /D "移動元フォルダのパス" "移動先フォルダのパス"
ちなみに今回試したところ、mklink使用時にパス前後の「""」は無くてもOKでした。
また、ドライブ名を指定する「C:」や「D:」は大文字でも、小文字の「c:」「d:」でもOKでした。ドライブ文字の大小はパスの指定には関係ないようです。
mklinkのオプション
オプション | 説明 |
指定なし | ファイルのシンボリックリンクが作成される。 |
/D | ディレクトリのシンボリックリンクを作成する。 |
/H | ハードリンクを作成する。 |
/J | ディレクトリジャンクションを作成する。 |
Windowsでも/Hや/Jでハードリンクやジャンクションが作成できるようです。
なおこれらの説明は、コマンドプロンプトでも確認することができます。
オプションに「/?」を指定してもOKですが、mklinkだけでも見れました。
mklinkコマンド使用時のポイント
mklinkコマンドを使おうとした時に、いくつか詰まりそうなポイントがあったので、こちらの項目でmklinkコマンド使用時に参考になりそうなことを書いておきます。
mklinkでシンボリックリンクを削除する方法
mklinkコマンドで作成したシンボリックリンクは「rmdir」コマンドで削除することが出来ます。使い方は簡単で、rmdirの後に削除したいシンボリックリンクのパスを指定するだけです。以下のような感じですね。
rmdir "削除したいシンボリックリンクがある場所"
例えば、先ほどの例でC:ドライブ内に作成した「音楽」というシンボリックリンク(フォルダ)を削除するには以下のコマンドを実行します。
rmdir "C:¥音楽"
これでさっき例として作成したC:ドライブ内のシンボリックリンクを削除できます。
mklinkは既存ファイルがある場合、同名で作成できない
mklinkコマンドでシンボリックリンクを作成する時の注意点として、リンク名と同名のファイル/フォルダが同じ場所に存在しているとシンボリックリンクが作れません。
既にリンクと同じ名前のファイル/フォルダが存在している場合は、
既に存在するファイルを作成することはできません。
というエラーが出てシンボリックリンクを作成することが出来ません。
先程の作成例で言うと「音楽」という“フォルダ”がC:ドライブ内に存在している状態で、「音楽」という“シンボリックリンク”をC:ドライブ内に作成することはできないという事です。
なので、さっきも保存先を変更したい該当のフォルダをそのまま切り取り、別の場所に移動した後でシンボリックリンクを作成したという感じですね。
mklinkは管理者権限で実行する
mklinkはコマンドプロンプトを管理者権限で実行していないと使えません。
この操作を実行するための十分な特権がありません。
上記のようなエラーが出てmklinkコマンドが実行できない時は、コマンドプロンプトが管理者権限で実行されているか確認して下さい。
シンボリックリンクとショートカットの違い
最後にシンボリックリンクとショートカットの違いについてです。
各リンクについて書き出すとボリュームが凄いことになるのでポイントだけ…
Windowsのショートカットとシンボリックリンクの主な違いは以下です。
- ショートカットはリンク先の場所が変わっても自動で追尾する。
- シンボリックリンクはリンク先の場所が変わるとリンク先不明となる。
- ショートカットのリンク先はプログラムで使えない。
- シンボリックリンクのリンク先はプログラムで使える。
- ショートカットはアプリケーションレベルのファイル管理機能。
- シンボリックリンクはOSレベルのファイル管理機能。
両者はよく似ていますが、リンク先の扱いが違う点が使い分ける理由です。
システムファイルがあるCドライブがSSD。
自分が使うファイルはHDDのDドライブという事が良くありますが、このような環境でSSD→HDDにファイルを移動したい時にはリンクの問題でショートカットが使えないので、シンボリックリンクで対応する必要があるという事です。
Cドライブがパンパンになった時はシンボリックリンクを使ってDドライブに移動してあげることで、比較的容量のキツイCドライブの容量に余裕を出すことが出来ます。
僕のノートパソコンに入れているソフトは合計で約85GBの言語ファイルを使用するのですが、Cドライブに置いておくのは厳しいので、このファイルにシンボリックリンクを作成することで実質Dドライブに移動しています。
こんな感じにうまいこと使っていただければと思います。
まとめ
以上、Windowsで拡張子が「.symlink」のシンボリックリンクを作る方法でした。
今回はコマンドプロンプトを使用しましたが、PowerShellでも作ることができます。
ただPowerShellの場合はmklinkではなく、New-Itemという別のコマンドを使うということもあり、この記事ではややこしくなりそうなので触れませんでした。
ではではこの辺で・w・