リンクを削除する
ハードリンクとシェルリンクは、対象がファイルそのものなので、通常のファイルと同じ扱いで削除ができる。ただし、1つのファイルに複数のハードリンクが存在する場合、ファイルの削除コマンド(DELコマンドやRemove-Itemコマンド)は、指定したリンクのみの削除となる。こうしてリンクが減っていき、最後のハードリンクに対して削除コマンドが適用されたとき、ファイル自体が削除される。
シェルリンクはそれ自体が普通のファイルなので、リンクの削除は、シェルリンクファイル(.lnkファイル)を削除するだけでいい。シェルリンクは、エクスプローラー上でのみ有効なので、コマンドラインからは単なるファイルでしかない。
シンボリックリンクの場合、リンク先がファイルなのかディレクトリなのかによってコマンドが異なる。同様にジャンクションの場合、対象がディレクトリであることを認識してコマンドを使う必要がある。
cmd.exeでは、ファイルの削除には、DEL/DELETEあるいはERASEコマンドを使う。複数のコマンドがあるが機能は同じである。これに対して、ディレクトリの削除には、RMDIR/RDコマンドを使う。RDはRMDIRの省略形である。
シンボリックリンクの場合も、リンク先がファイルの場合にはリンクの削除にはDELコマンドを、リンク先がディレクトリの場合には、リンクの削除にRMDIRコマンドを使い分ける必要がある。
DELコマンドの場合、対象にディレクトリを指定すると、暗黙的に「\*」が仮定されるため、対象ディレクトリ内の消去という動作になる。このため、ディレクトリへのシンボリックリンクやジャンクションを消去する場合には、間違ってDELコマンドを使わないように注意が必要だ。
PowerShellでは、過去にシンボリックリンクやジャンクションの扱いが正しくなかったことがあるが、現在のWindows PowerShell(Ver.5.1)、PowerShell(V 7.2)では、予想可能な振る舞いをするようになった。
PowerShell/Windows PowerShellでは、rmもrmdirもともにRemove-Itemコマンドのエイリアスになっている。このRemove-Itemコマンドでは、シンボリックリンクやジャンクションを指定すると、リンクのみを消去するようになっている。
リンクを探す
cmd.exeでは、ジャンクションとシンボリックリンクはDIRコマンドに「<JUNCTION>」「<SYMLINKD>」(シンボリック・リンクでディレクトリの場合)、「<SYMLINK>」(同ファイルの場合)と表示が出る。/Sオプションでサブディレクトリをすべて表示させ、ファイルにリダイレクトしたのち、これらの文字列を探す。
ハードリンクは、cmd.exe上ではファイルごとに調べるしか方法がない。
fsutil hardlink list ファイルパス
というコマンドで指定したファイルにハードリンクがあれば、すべて表示させることができる。しかし、ファイルを1つ1つ指定して調べる必要がある。こうした用途には、PowerShellのほうが向いている。
PowerShell/Windows PowerShellでは、
Get-ChildItem <起点パス> -Recurse | Where-Object LinkType -eq HardLink
として、ハードリンクを持つファイルを探すことが可能だ。最後の部分を「Junction」「SymbolicLink」とすることでジャンクションやシンボリック・リンクを探すことができる。
シンボリックリンクは、簡単にファイルやディレクトリを他の場所から「持ってくる」ことができるため、慣れると多用しがちになる。多くのプログラムは、シンボリック・リンクをファイルやディレクトリとして扱ってくれるので問題はないのだが、バックアップや検索インデックス作成など、ソフトウェアによっては、シンボリック・リンクを意図的に排除、あるいはオプションで扱いを制御していることがあるので注意が必要だ

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ












