Windows 10 には mklink が無い…わけではない

Windows ユーザの皆さん、シンボリックリンク使ってますか?
Linux では多用されるシンボリックリンクも Windows ではあまり使う機会が無いと思いますが、実はかなり以前 (Vista以降) から使えるようになっています。

シンボリックリンクは mklink コマンドで作成できます。

そこで、いっちょ使ってやろうかな!と PowerShell を起動して mklink と入力すると、コマンドが無くて実行できないという事態に陥ります (´・ω・`)

mklink_powershell.png
Windows PowerShell

PowerShell では、画像の通り cmdmklink を渡せば実行できます。

cmd /c mklink /d "c:\symlink名" "e:\foo\既存のディレクトリ"

シンボリックリンク作成時は、管理者権限が必要になる場合があります。
予め管理者権限付きで PowerShell を起動しましょう。

ジャンクションとハードリンク

mklink には他にも類似のリンクを作る機能があり、mklink /j でジャンクション、mklink /h でハードリンクが作れます。

これらとシンボリックリンクの違いは色々あるようですが、どう使い分けるべきなのか明確な基準がありません。この雑然とした感じが Windows らしい所でもありますね!
ただシンボリックリンクが最も新しい機能なので、基本的にはシンボリックリンクで良いようです。

なぜ直接実行できないの?

直接実行できない理由は、どうやら mklink が cmd の内部コマンドだからのようです。PowerShell ではなく普通のコマンドプロンプトからなら、cmd を通さなくても実行可能です。

しかし cmd の内部コマンドが全て PowerShell で直接実行できないわけではなく、start などは実行できます。うーん、謎仕様ですね(´・ω・`)

関連サイト

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
https://itpc.blog.fc2.com/tb.php/200-6bce985d
この記事にトラックバック(FC2ブログユーザ用)