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

2018/06/14

#Windows10 PowerShell コマンドライン

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

PowerShell での実行方法

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

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

mklink_powershell.png
Windows PowerShell

PowerShell では、画像の通り cmdmklink を渡せば実行できます。
シンボリックリンク作成時は管理者権限が必要ですので、管理者権限付きで PowerShell を起動します。

cmd /c mklink "新規symlink名" "既存ファイルのパス"

# リンク先がフォルダの場合
cmd /c mklink /d "新規symlink名" "既存フォルダのパス"

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

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

これらとシンボリックリンクの違いは色々ありますが、使い分けの明確な基準はありません。
シンボリックリンクとハードリンクの違いについて書きましたので、そちらをご参照ください。

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

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

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

関連サイト

サイト内を検索

自己紹介

自分の写真
スマートフォン(Android)、IT、PC、プログラミング等の役立つ(かもしれない)情報や気になる話題を書いています。

QooQ