mklink - リンクの作成
目次
mklinkコマンドは、ファイルシステム上のリンクを作成するコマンドです。
エクスプローラーのショートカットと似ていますが、mklinkで作成するリンクはファイルシステムレベルで扱われるため、コマンドラインやアプリケーションからも通常のファイルやフォルダに近い形で利用できます。
mklinkコマンドの基本構文
mklink [[/d] | [/h] | [/j]] <リンク> <ターゲット>
| 要素 | 説明 |
|---|---|
<リンク> | 新しく作成するリンクのパス |
<ターゲット> | リンク先となるファイルまたはフォルダのパス |
/d | ディレクトリへのシンボリックリンクを作成 |
/h | ファイルへのハードリンクを作成 |
/j | ディレクトリジャンクションを作成 |
リンクの種類
mklinkで作成できるリンクは、用途によって使い分けます。
| 種類 | 作成方法 | 主な用途 |
|---|---|---|
| ファイルのシンボリックリンク | オプションなし | 別の場所にあるファイルを参照したい |
| ディレクトリのシンボリックリンク | /d | フォルダ全体を別の場所から参照したい |
| ハードリンク | /h | 同一ボリューム内で 1 つのファイルに複数の名前を付けたい |
| ディレクトリジャンクション | /j | 管理者権限なしでローカルのフォルダを別の場所から参照したい |
ショートカットは .lnk ファイルですが、シンボリックリンクはファイルシステムのリンクです。
コマンドやアプリケーションから扱うときは、ショートカットより mklink
のリンクの方が自然に使える場面が多くあります。
ジャンクションとシンボリックリンクの主な違いは次のとおりです。
| 項目 | シンボリックリンク | ディレクトリジャンクション(/j) |
|---|---|---|
| 対象 | ファイル・フォルダ | フォルダのみ |
| 相対パスのターゲット | 使える | 絶対パスとして保存される |
| ネットワーク上のパス | 指定できる | 指定できない(ローカルのみ) |
| 管理者権限 | 通常は必要 | 不要 |
ハードリンクも管理者権限なしで作成できます。
管理者権限を使えない環境でフォルダを別の場所へ見せたいときは、ジャンクションが手軽です。
基本的な使い方
ファイルへのシンボリックリンクを作成する
mklink C:\work\latest.log C:\logs\2026-04-20.log
フォルダへのシンボリックリンクを作成する
mklink /d C:\work\assets D:\shared\assets
ハードリンクを作成する
mklink /h C:\work\report-latest.txt C:\archive\report.txt
ハードリンクはファイルに対してのみ作成でき、同じボリューム内で使う必要があります。 フォルダには使えません。
ディレクトリジャンクションを作成する
mklink /j C:\work\current D:\projects\current
作成したリンクを確認する
dirコマンドを実行すると、リンクの種類が<SYMLINK>(ファイルのシンボリックリンク)、<SYMLINKD>(フォルダのシンボリックリンク)、<JUNCTION>(ジャンクション)として表示されます(ハードリンクは通常のファイルと区別されず、表示されません)。
dir C:\work
dir /alを使うと、シンボリックリンクとジャンクションだけを一覧表示できます。ハードリンクの場合は、fsutil hardlink list <ファイル>で同じ実体を指す名前を確認できます。
使い分けの目安
- 別ドライブをまたいでフォルダを参照したい場合は、まずシンボリックリンクかジャンクションを検討します。
- 同じファイルに複数の名前を持たせたい場合は、ハードリンクが向いています。
- バッチファイルやツールから通常のパスと同じように扱いたい場合は、ショートカットより
mklinkの方が適しています。
注意点
多くの環境では、シンボリックリンクの作成に管理者権限が必要です。 ただし、Windows 10 / 11 で開発者モードが有効な環境では、管理者権限なしで作成できる場合があります。
- シンボリックリンクは、相対パスでも絶対パスでも作成できます。
- ハードリンクは元ファイルと同じ実体を指す別名です。どちらか一方の名前を削除しても、もう一方から内容を参照できます。
- 相対パスでシンボリックリンクを作る場合、ターゲットは「リンクがある場所」を基準に解釈されます。
- リンクの名前(
<リンク>)にすでにファイルやフォルダが存在すると作成に失敗します。 - ターゲットが存在しなくてもシンボリックリンクは作成できますが、そのリンクを開くとエラーになります。
- 適切なコマンドでリンクを削除すれば、リンク先の元ファイルや元フォルダは削除されません。
「十分な特権がありません」と表示されたとき
管理者権限なしでシンボリックリンクを作成すると、次のエラーになります。
コマンドプロンプトを管理者として実行するか、Windows の設定で開発者モードを有効にしてください。フォルダであれば、管理者権限が不要な/j(ジャンクション)で代用する方法もあります。
PowerShell で作成する場合
mklinkはコマンドプロンプトの内部コマンドのため、PowerShell では直接実行できません。cmd /c経由で実行するか、New-Itemを使います(次の 2 行は同じリンクを作る別の方法です)。
cmd /c mklink /d C:\work\assets D:\shared\assets
New-Item -ItemType SymbolicLink -Path C:\work\assets -Target D:\shared\assets
リンクの削除方法
リンクだけを削除したい場合は、リンクの種類に応じて削除コマンドを使い分けます。
ファイルのリンクを削除する
del C:\work\latest.log
ディレクトリのリンクやジャンクションを削除する
rmdir C:\work\assets
フォルダのシンボリックリンクやジャンクションに対してdelを実行すると、リンク先フォルダ内のファイルが削除されます。
フォルダのリンクを消すときは、必ずrmdir(/sを付けない)を使ってください。
削除するのはあくまでリンクです。リンク先の実体を削除したい場合は、元のパスを指定してください。