Windowsで不正な名前のファイルを削除するTech TIPS

何らかの拍子に不正な名前のファイルができてしまい、削除も名前変更もできなくなることがある。ファイル名の最後に「.」が付いていたり、デバイス名と同じ名前を持つファイルは、削除することができない。このようなファイルは、特殊なファイル名表記を利用して削除することができる。

» 2005年01月29日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 2000/Windows XP/Windows Server 2003



解説

 Windowsシステムを使っていると、何らかの拍子に、通常では開いたり、削除したりできないような名前のファイルやフォルダが作成されてしまうことがある。例えば「abc...」のように最後に「 . 」が付いたファイルや、「PRN」「COM1」といった予約デバイス名と同じ名前のファイルである。このようなファイルが作成される原因としては、(インストール)プログラムのバグや(不正なファイル名文字の排除を忘れているなど)、入力時のミスで不正なファイル名を指定した場合など、さまざまな可能性がある。原因はともかく、いったんこのような「不正な名前」を持つファイルができてしまうと、ファイルの削除や名前変更ができなくなるだけでなく、ファイルやフォルダを(削除して)整理することすらできなくなってしまう。以下はコマンド・プロンプト上でdelコマンドで削除しようとした例であるが、エクスプローラ上で[ファイル]−[削除]コマンドを使っても、同様にエラーとなる(エクスプローラではサイズ表示もできなくなったりする)。

C:\WORK>dir
ドライブ D のボリューム ラベルは NTFSVOL です
ボリューム シリアル番号は D460-15D9 です

C:\WORK のディレクトリ

2005/01/26  11:25    <DIR>          .
2005/01/26  11:25    <DIR>          ..
2005/01/26  14:27               670 abc. …最後に . がある
2005/01/26  14:27               713 abc..
2005/01/26  14:26               587 COM2 …予約デバイス名
2005/01/26  14:26               462 CON
2005/01/26  14:26               545 LPT1
2005/01/26  14:26               503 PRN
               6 個のファイル               3,480 バイト
               2 個のディレクトリ  41,568,780,288 バイトの空き領域

C:\WORK>del abc. ……削除しようとしてもできない
C:\WORK\abc. が見つかりませんでした。

C:\WORK>del abc..
C:\WORK\abc.. が見つかりませんでした。

C:\WORK>del com2 ……デバイス名のファイルも削除できない
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。

C:\WORK>del prn
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。



 だがこのようなファイル/フォルダ名でも、特別な表記方法を利用すれば、削除可能な場合がある。

操作方法

 エクスプローラの削除や、コマンド・プロンプトのdelコマンドでも削除できないようなファイル/フォルダは、delコマンドと「\\?\ドライブ名\パス名\ファイル名」という表記を使えば削除することができる。「ドライブ名」には「c:」や「d:」など、そのファイルが存在しているドライブ名を指定する。「パス名」には、そのファイルの含まれるフォルダの名前を、ドライブのルートからの絶対パスで指定する。カレント・ディレクトリからの相対パスではいけない。「ファイル名」には削除したいファイルの名前を指定する。また、パス名やファイル名に空白などの特殊な文字が含まれている場合は、ファイル名表記全体を引用符で囲む必要がある。以下は、c:\workフォルダにある特殊なファイルを削除している場合の例である。カレント・ディレクトリは「c:\work」であるが、「\\c:\work\…」というふうに、必ずルートからの絶対パスを使って指定しなければならない。

C:\WORK>del \\?\d:\work\abc..  ……特殊な表記を使って削除する

C:\WORK>del "\\?\d:\work\con"  ……引用符で囲んでもよい

C:\WORK>del "\\?\d:\work\lpt1"

C:\WORK>dir
ドライブ D のボリューム ラベルは NTFSVOL です
ボリューム シリアル番号は D460-15D9 です

C:\WORK のディレクトリ

2005/01/27  11:39    <DIR>          .
2005/01/27  11:39    <DIR>          ..
2005/01/26  14:27               670 abc. ……3つ削除されている
2005/01/26  14:26               587 COM2
2005/01/26  14:26               503 PRN
               3 個のファイル               1,760 バイト
               2 個のディレクトリ  41,568,796,672 バイトの空き領域



 このように、通常は不正とされるファイル名でも削除することができる。

 なおファイルが削除できない原因としては、このほかにもアクセス権の不足や、使用中であるなどの問題も考えられる。可能ならば使用中のアプリケーションやサービスなどを終了させてみるとか、システムからログオフしたり、再起動したりしてから上記の操作を行うと確実である。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。