コマンドプロンプト上でファイルを削除するには「del」コマンドを用いる。ただ、複数ファイルを意図した通りに削除するのは意外に難しい。フォルダ内のファイル削除やサブフォルダ自体の削除、デフォルトだと削除できないファイルなど、delコマンドで「ハマりやすい」パターンの対処方法と注意点を説明する。
対象:Windows 10/Windows 11、Windows Server 2016/Windows Server 2019/Windows Server 2022
コマンドラインで利用できる「del(erase)」コマンドには、特定のパターンに合致する全ファイルを手軽かつ確実に削除できるなど、エクスプローラーにはない便利さがある。その一方で使い方を誤ると、残したかったファイルが削除されてしまう「事故」が生じやすいコマンドでもある。
例えば、「Microsoft Word」の古い文書ファイル形式である拡張子「.doc」のファイルを削除しようとして、「del *.doc」とすると、新しい形式である拡張子「.docx」のファイルも削除されてしまう(8.3形式のファイル名を生成している場合。詳細は、Tech TIPS「8.3形式の短いファイル名を生成しないようにする」参照のこと)。
そこで、まずはdelコマンドの基礎的な注意点から解説する。その後、ファイル名やパターンに一致した複数ファイル、サブフォルダ自体、フォルダ内の全ファイル、デフォルトではエラーが生じて削除できないファイルなどを削除する方法をそれぞれ説明していく。
コマンドプロンプトでファイルを削除する場合、通常はdelコマンド(もしくはeraseコマンド。どちらでも同じ)に削除したいファイル名やワイルドカード指定を付けて実行すればよい。このコマンドの使い方は次の通りである。
削除したいファイルが複数ある場合は、delコマンドの引数として複数並べてもよいし、ワイルドカードで指定することもできる。ファイル名に空白文字が含まれている場合は、「"(ダブルクオート記号)」で囲む。コマンドプロンプトの基本的な使い方については、Tech TIPS「これだけは覚えておきたいコマンドプロンプトの使い方」も参照のこと。
実際に使用すると次のようになる。delコマンドを実行すると、基本的には削除の確認なしにすぐ削除されるので十分に注意して実行すること。ファイル名のパターンとして「*」もしくは「*.*」を指定するか、「/p」オプションを付けると確認メッセージが表示されるので、[Y]キーを入力した場合のみ削除が実行される。「/q」オプションを付けた場合は、確認なしで削除される。
エクスプローラーでファイルを削除する場合と違って、delコマンドでファイルを削除すると、[ごみ箱]には残らない。削除したファイルを復活させるには、「以前のバージョン」機能を使うか(Tech TIPS「上書き/削除したファイルを『以前のバージョン』で復旧させる」参照)、バックアップからリストアするなどの必要があり、大変面倒なことになる。
削除対象としてフォルダ名(ディレクトリ名)を指定すると、そのフォルダの中にある全ファイルが削除対象となるので(例:「del folder」は「del folder\*」や「del folder\*.*」と同じになる)、ファイル名と間違ってフォルダ名を指定して削除しないように注意すること。なお、「del .」は「del *.*」と同じである。
delコマンドは、ファイルを削除できる一方で、フォルダを削除できない。例えば前述のようにフォルダ名を指定した場合、フォルダ内のファイルは削除される一方で、指定したフォルダそのものや、その中にあるサブフォルダは削除されない。
フォルダごとまとめて削除したければ、「rmdir(rd)」コマンドを利用する。
カレントフォルダの中にあるファイルとフォルダをまとめて削除したければ、「rmdir /s .」とすればよい。
現在のフォルダの下にある、指定したパターンにマッチするファイルを全て削除するには「/s」オプションを付けて実行すればよい。
単に「del /s *.txt」のようにすると、現在のフォルダから下にある全ての*.txtファイル(拡張子がtxtのファイル)を削除できる。
「del /s c:\doc\work1\*.txt」のようにフォルダ名を前に付けてワイルドカード指定すると、そのフォルダ(この場合はc:\doc\work1)以下にある全ての*.txtファイルをまとめて削除できる(フォルダそのものは削除されない。削除されるのは、その中にあるファイルだけ)。
この場合も確認なしで該当するファイルが全て削除されるので(削除されたファイル名は表示される)、よく確認してから実行すること。
何が削除されるかよく分からない場合は、まず「dir /s *.txt /b」や「dir /s c:\doc\work1\*.txt /b」などを実行して、どのファイルが削除対象になるかを確認するとよい。dirコマンドの使い方については、Tech TIPS「Windowsのdirコマンドでファイル名の一覧を取得する」も参照してほしい。また「/p」オプションを付けて、余計なファイルが削除されないかどうか、確認表示させてもよいだろう。
ただし「dir /s 〜」と違って、「del /s 〜」ではシンボリックやジャンクションのリンク先はたどれない。フォルダへのリンクの指す先にファイルが存在しても、それらは削除されない。「cd」コマンドなどでリンク先へ移動してから削除するか、「del /s <リンク先>\<対象ファイル名>」のように明示的にパスを指定すること(リンクについてはTech TIPS「Windowsのシンボリックリンクとジャンクションとハードリンクの違い」参照)。
delコマンドでは、何も属性が付いていないファイルはそのまま削除できる。しかし、読み取りのみの属性の付いたファイルはそのままでは削除できない(ファイルの属性は「attrib」コマンドで確認できる)。
読み取りのみの属性の付いたファイルを削除するには、事前にattribコマンドなどで読み取りのみ属性(R属性)を外すか、「/f」オプションを付けてdelコマンドを実行する。
読み取りのみ以外の属性、例えばシステム属性(S属性)や隠し属性(H属性)の付いたシステムファイル(例:Thumbs.dbなど。Tech TIPS「WindowsでThumbs.dbファイルを作成しないようにする」)は、デフォルトのままではdelコマンドの削除の対象とならない(dirコマンドでもSやH属性の付いたファイルが表示されないのと同じ理屈だ)。
S属性を持つファイルを削除するには「/as」を、H属性を持つファイルなら「/ah」オプションを、それぞれ付けてdelコマンドを実行する。複数の属性をまとめて対象とするなら「/a」オプションだけでもよい。
delコマンドのヘルプは、他のコマンドラインコマンドと同じく、「/?」オプションを付けると表示できる。
■更新履歴
【2023/11/27】Windows 11などに対応しました。
【2019/12/06】画面などを追加しました。
【2017/01/23】初版公開。
Copyright© Digital Advantage Corp. All Rights Reserved.