連載
» 2017年01月23日 05時00分 UPDATE

Tech TIPS:Windowsのdelコマンドを使って、特定のファイル名やパターンに一致するファイルをまとめて削除する

コマンドプロンプト上でファイルを削除するにはdelコマンドを使う。サブフォルダ以下にある特定の名前のファイルを全て削除するには/Sオプションが利用できる。

[打越浩幸,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 7/Windows 8/Windows 8.1/Windows 10/Windows Server 2008 R2/Windows Server 2012/Windows Server 2012 R2/Windows Server 2016


 コマンドラインで利用できる「delコマンド」には、特定のパターンに合致する全ファイルを手軽かつ確実に削除できるなど、エクスプローラにはない便利さがある。その一方で使い方を誤ると、残したかったファイルが削除されてしまう「事故」が生じやすいコマンドでもある。

 そこで、まずは基礎的な注意点から解説する。不要であれば「指定にマッチするファイルを再帰的に全て削除するには?」に読み進んでいただきたい。

ファイルを削除するにはdelコマンド

 コマンドプロンプトでファイルを削除する場合、通常はdelコマンド(もしくはeraseコマンド。どちらでも同じ)に削除したいファイル名やワイルドカード指定を付けて実行すればよい。このコマンドの使い方は次の通りである。

C:\>del /? ……ヘルプの表示
ファイル (複数可) を削除します。 ……削除対象は複数列挙可能

DEL [/P] [/F] [/S] [/Q] [/A[[:]属性]] 名前
ERASE [/P] [/F] [/S] [/Q] [/A[[:]属性]] 名前

  名前          ファイルまたはディレクトリ (複数可) の一覧を指定します。
                複数のファイルを削除するときはワイルドカードを使用します。
                ディレクトリが指定されたときはディレクトリ内のすべてのファ
                イルは削除されます。

  /P            各ファイルを削除する前に確認のメッセージを表示します。
  /F            読み取り専用ファイルを強制的に削除します。
  /S            指定されたファイルをすべてのサブディレクトリから削除します。
  /Q            ワイルドカードを使用して一括削除するときに、確認のメッセージ
                を表示しません。(QUIET モード)
  /A            属性により削除するファイルを選択します。
……(以下省略)……



 削除したいファイルが複数ある場合は、delコマンドの引数として複数並べてもよいし、ワイルドカードで指定することもできる。ファイル名中に空白文字が含まれている場合はダブルクォート記号で囲む。コマンドプロンプトの基本的な使い方についてはTIPS「これだけは覚えておきたいコマンドプロンプトの使い方」も参照のこと。

 実際に使用すると次のようになる。delコマンドを実行すると、基本的には削除の確認なしにすぐ削除されるので注意して実行すること。ファイル名のパターンとして「*」もしくは「*.*」を指定するか、/Pオプションを付けると確認メッセージが表示されるので、[Y]キーを入力した場合のみ削除が実行される(/Qオプションを付けると確認なしで削除される)。

C:\MyDoc\Document1>dir ……ファイルの確認
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1 のディレクトリ

2017/01/19  16:19    <DIR>          .
2017/01/19  16:19    <DIR>          ..
2015/04/15  13:53            34,816 book1.doc ……*.docなどを削除してみる
2017/01/19  16:06    <DIR>          Doc1
2017/01/19  16:19    <DIR>          Doc2
2011/03/25  15:57            80,384 draft4.docx
2015/04/15  15:28            18,608 figure02.png
2015/04/15  15:24           287,744 figure03.pptx
2015/04/15  09:35             2,746 filelist3.txt
2017/01/19  16:19    <DIR>          Logs
2016/11/29  09:10            76,331 photo7.jpg
2011/03/25  15:06            94,294 photo9.jpg
2011/03/25  15:09            20,864 pict1.png
2011/03/25  15:09            78,466 pict2.bmp
2004/02/27  07:42            58,880 work2.doc
         10 個のファイル             753,133 バイト
          5 個のディレクトリ  29,609,652,224 バイトの空き領域

C:\MyDoc\Document1>del *.doc *.docx *.png ……削除対象を複数指定する

C:\MyDoc\Document1>dir ……削除結果の確認
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1 のディレクトリ

2017/01/19  17:09    <DIR>          .
2017/01/19  17:09    <DIR>          ..
2017/01/19  16:06    <DIR>          Doc1
2017/01/19  16:19    <DIR>          Doc2
2015/04/15  15:24           287,744 figure03.pptx ……*.doc*などが削除されている
2015/04/15  09:35             2,746 filelist3.txt
2017/01/19  16:19    <DIR>          Logs
2016/11/29  09:10            76,331 photo7.jpg
2011/03/25  15:06            94,294 photo9.jpg
2011/03/25  15:09            78,466 pict2.bmp
          5 個のファイル             539,581 バイト
          5 個のディレクトリ  29,609,877,504 バイトの空き領域

C:\MyDoc\Document1>del * ……全ファイルを削除するために「*」のみを指定してみる
C:\MyDoc\Document1\*、よろしいですか (Y/N)? y ……[y]と指定しない限り削除されない

C:\MyDoc\Document1>dir ……結果の確認
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1 のディレクトリ

2017/01/19  17:09    <DIR>          .
2017/01/19  17:09    <DIR>          ..
2017/01/19  16:06    <DIR>          Doc1
2017/01/19  16:19    <DIR>          Doc2
2017/01/19  16:19    <DIR>          Logs
          0 個のファイル                   0 バイト ……フォルダは残っているがファイルは全て削除されている
          5 個のディレクトリ  29,610,430,464 バイトの空き領域

C:\MyDoc\Document1>



 なおエクスプローラーでファイルを削除する場合と違って、delコマンドでファイルを削除すると、ごみ箱には残らない。削除したファイルを復活させるには、「以前のバージョン」機能を使うか(TIPS「上書き/削除したファイルを『以前のバージョン』で復旧させる」参照)、バックアップからリストアするなどの必要がある。

●フォルダ名を指定するとその中が全て削除される事に注意

 削除対象としてフォルダ名(ディレクトリ名)を指定すると、そのフォルダの中にある全ファイルが削除対象となるので(例:「del folder」は「del folder\*」や「del folder\*.*」と同じになる)、間違って削除しないように注意すること。「del .」は「del *.*」と同じである。

C:\MyDoc\Document1>dir doc2 ……フォルダdoc2の内容を確認してみる
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1\doc2 のディレクトリ  ……doc2フォルダの内容

2017/01/19  16:19    <DIR>          .
2017/01/19  16:19    <DIR>          ..
2011/03/25  15:06            94,294 figure04.png
2011/03/25  15:09            65,745 figure06.png
2015/04/15  09:35             2,746 filelist3.txt
2016/11/29  09:10            76,331 photo7.png
2011/03/25  15:09            20,864 pict1.png
          5 個のファイル             259,980 バイト
          2 個のディレクトリ  29,609,652,224 バイトの空き領域

C:\MyDoc\Document1>del doc2 ……フォルダ名を指定して削除
C:\MyDoc\Document1\doc2\*、よろしいですか (Y/N)? y ……確認応答の入力

C:\MyDoc\Document1>dir doc2 ……結果の確認
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1\Doc2 のディレクトリ

2017/01/19  17:14    <DIR>          .
2017/01/19  17:14    <DIR>          ..
          0 個のファイル                   0 バイト ……このフォルダの中のファイルが全て削除されている(Doc2フォルダそのものは残っている)
          2 個のディレクトリ  29,609,926,656 バイトの空き領域

C:\MyDoc\Document1>



 delコマンドでは、ファイルは削除できるが、フォルダを削除することはできない。フォルダごとまとめて削除したければ、rmdirコマンド(=rdコマンド)を利用する。

C:\MyDoc\Document1>dir doc* ……削除対象の確認
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1 のディレクトリ

2017/01/19  16:06    <DIR>          Doc1
2017/01/19  17:14    <DIR>          Doc2 ……削除対象のフォルダ
          0 個のファイル                   0 バイト
          2 個のディレクトリ  29,609,652,224 バイトの空き領域

C:\MyDoc\Document1>rmdir Doc2 ……フォルダを削除するにはrmdirを使う
ディレクトリが空ではありません。  ……空でないフォルダは削除不可

C:\MyDoc\Document1>rmdir /s Doc2  ……/sオプションを付けて削除する
Doc2、よろしいですか (Y/N)? y ……確認応答

C:\MyDoc\Document1>dir doc* ……削除結果の確認
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1 のディレクトリ

2017/01/19  16:06    <DIR>          Doc1 ……Doc2は削除されている
          0 個のファイル                   0 バイト
          1 個のディレクトリ  29,609,947,136 バイトの空き領域

C:\MyDoc\Document1>



 カレントフォルダの中にあるファイルとフォルダをまとめて全部削除したければ、「rmdir /s .」とすればよい。

C:\MyDoc\Document1>rmdir /s . ……カレントフォルダ中にあるファイルもフォルダもまとめて全部削除する簡単な方法
.、よろしいですか (Y/N)? y ……確認応答
プロセスはファイルにアクセスできません。別のプロセスが使用中です。 ……カレントフォルダ自身は削除できないというメッセージ。気にしなくてよい

C:\MyDoc\Document1>dir ……確認してみる
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1 のディレクトリ

2017/01/20  13:54    <DIR>          .
2017/01/20  13:54    <DIR>          ..
          0 個のファイル                   0 バイト ……全部削除されている
          2 個のディレクトリ  29,860,048,896 バイトの空き領域

C:\MyDoc\Document1>



指定にマッチするファイルを再帰的に全て削除するには?

 現在のフォルダの下にある、指定したパターンにマッチするファイルを全て削除するには/Sオプションを付けて実行すればよい。

 単に「del /s *.txt」のようにすると現在のフォルダから下にある全ての*.txtファイルを削除できる。

 「del /s c:\doc\work1\*.txt」のようにフォルダ名を前に付けてワイルドカード指定すると、そのフォルダ(この場合はc:\doc\work1)以下にある全ての*.txtファイルをまとめて削除できる(フォルダそのものは削除されない。削除されるのは、その中にあるファイルだけ)。

C:\MyDoc\Document1>dir /s *.txt *.doc* /b …….txtと.docファイルの一覧をdirコマンドで列挙してみる(/sでサブフォルダの内容も列挙する)
C:\MyDoc\Document1\filelist3.txt
C:\MyDoc\Document1\book1.doc
C:\MyDoc\Document1\draft4.docx
C:\MyDoc\Document1\work2.doc
C:\MyDoc\Document1\Doc1\project2.docx
C:\MyDoc\Document1\Doc1\project3.doc
C:\MyDoc\Document1\Doc1\folder1\textdata2.txt
C:\MyDoc\Document1\Doc1\folder1\project5.docx
C:\MyDoc\Document1\Doc1\folder2\project1.doc
C:\MyDoc\Document1\Doc2\filelist3.txt
C:\MyDoc\Document1\Logs\app3logs-12.txt
C:\MyDoc\Document1\Logs\app3logs-22.txt

C:\MyDoc\Document1>del /s *.txt ……サブフォルダも含めて、全ての*.txtファイルを削除してみる
削除したファイル - C:\MyDoc\Document1\filelist3.txt ……削除されたファイル名
削除したファイル - C:\MyDoc\Document1\Doc1\folder1\textdata2.txt
削除したファイル - C:\MyDoc\Document1\Doc2\filelist3.txt
削除したファイル - C:\MyDoc\Document1\Logs\app3logs-12.txt
削除したファイル - C:\MyDoc\Document1\Logs\app3logs-22.txt

C:\MyDoc\Document1>dir /s *.txt *.doc* /b ……削除結果の確認。*.txtだけ削除されている
C:\MyDoc\Document1\book1.doc
C:\MyDoc\Document1\draft4.docx
C:\MyDoc\Document1\work2.doc
C:\MyDoc\Document1\Doc1\project2.docx
C:\MyDoc\Document1\Doc1\project3.doc
C:\MyDoc\Document1\Doc1\folder1\project5.docx
C:\MyDoc\Document1\Doc1\folder2\project1.doc

C:\MyDoc\Document1>dir C:\Mydoc\Doc2\*.doc* /s /b ……別フォルダの下にある*.doc*ファイルの一覧
C:\Mydoc\Doc2\book1.doc
C:\Mydoc\Doc2\book2.docx
C:\Mydoc\Doc2\draft4.doc

C:\MyDoc\Document1>del C:\Mydoc\Doc2\*.doc /s ……別フォルダを指定してワイルドカードで削除してみる
削除したファイル - C:\Mydoc\Doc2\book1.doc
削除したファイル - C:\Mydoc\Doc2\draft4.doc

C:\MyDoc\Document1>dir C:\Mydoc\Doc2\*.doc* /s /b ……結果の確認
C:\Mydoc\Doc2\book2.docx ……*.docファイルは削除されている

C:\MyDoc\Document1>



 この場合も確認なしで該当するファイルが全て削除されるので(削除されたファイル名は表示される)、よく確認してから実行すること。

 何が削除されるかよく分からない場合は、まず「dir /s *.txt /b」や「dir /s c:\doc\work1\*.txt /b」などを実行して、どのファイルが削除対象になるかを確認するとよい。dirコマンドの使い方についてはTIPS「Windowsのdirコマンドでファイル名の一覧を取得する」も参照のこと。また/Pオプションを付けて、余計なファイルが削除されないか、確認表示させてもよいだろう。

 ただし「dir /s 〜」と違って、「del /s 〜」ではシンボリックやジャンクションのリンク先は辿られない。フォルダへのリンクの指す先にファイルが存在しても、それらは削除されない。cdコマンドなどでリンク先へ移動してから削除するか、「del /s <リンク先>\<対象ファイル名>」のように明示的にパスを指定すること(リンクについてはTIPS「Windowsのシンボリックリンクとジャンクションとハードリンクの違い」参照)。

読み取りのみやシステム/隠し属性の付いたファイルを削除するには?

 delコマンドでは、何も属性の付いていないファイルはそのまま削除できる。だが、読み取りのみの属性の付いたファイルはそのままでは削除できない(ファイルの属性はattribコマンドで確認できる)。

 読み取りのみの属性の付いたファイルを削除するには、事前にattribコマンドなどで読み取りのみ属性(R属性)を外すか、/Fオプションを付けてdelコマンドを実行する。

C:\MyDoc\Document1>dir *.doc ……ファイルの確認
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1 のディレクトリ

2015/04/15  13:53            34,816 book1.doc ……ファイルが4つある
2015/04/15  13:53            34,816 book3.doc
2004/02/27  07:42            58,880 work2.doc
2004/02/27  07:42            58,880 work4.doc
          4 個のファイル             187,392 バイト
          0 個のディレクトリ  29,609,545,728 バイトの空き領域

C:\MyDoc\Document1>attrib *.doc ……attribコマンドを使うと属性に関わらず全ファイルの名前と属性が表示される
A            C:\MyDoc\Document1\book1.doc ……通常ファイル
A    R       C:\MyDoc\Document1\book3.doc ……読み取りのみファイル
A            C:\MyDoc\Document1\work2.doc ……通常ファイル
A    R       C:\MyDoc\Document1\work4.doc ……読み取りのみファイル

C:\MyDoc\Document1>del *.doc ……*.docファイルを全て削除してみる
C:\MyDoc\Document1\book3.doc ……読み取りのみファイルは削除できない
アクセスが拒否されました。
C:\MyDoc\Document1\work4.doc
アクセスが拒否されました。

C:\MyDoc\Document1>attrib *.doc ……削除できなかったファイルの確認
A    R       C:\MyDoc\Document1\book3.doc ……読み取りのみファイルは削除できなかった
A    R       C:\MyDoc\Document1\work4.doc

C:\MyDoc\Document1>del /f *.doc ……読み取りのみファイルも強制的に削除してみる

C:\MyDoc\Document1>dir *.doc ……結果の確認
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1 のディレクトリ

ファイルが見つかりません  ……全て削除できた

C:\MyDoc\Document1>



 読み取りのみ以外の属性、例えばシステム属性(S属性)や隠し属性(H属性)の付いたシステムファイル(例:Thumbs.dbなど。TIPS「WindowsでThumbs.dbファイルを作成しないようにする」)は、デフォルトのままではdelコマンドの削除の対象とならない(dirコマンドでもSやH属性の付いたファイルが表示されないのと同じ理屈)。

 これらの属性を持つファイルを削除したい場合は、/AS/AHオプションを付けてdelコマンドを実行する。複数の属性をまとめて対象とするなら/Aだけでもよい。

C:\MyDoc\Document1>dir /s /b thumb*.db ……Thumbs.dbファイルを探してみる
ファイルが見つかりません  ……見つからない

C:\MyDoc\Document1>dir /s /b /a thumb*.db ……/aオプションも付けてdirを実行してみる
C:\MyDoc\Document1\Thumbs.db ……thumbs.dbファイルが表示された
C:\MyDoc\Document1\Doc1\Thumbs.db
C:\MyDoc\Document1\Doc1\folder1\Thumbs.db
C:\MyDoc\Document1\Doc1\folder2\Thumbs.db
C:\MyDoc\Document1\Doc2\Thumbs.db

C:\MyDoc\Document1>attrib /s thumbs.db ……thumbs.dbファイルの属性を確認してみる
A  SH        C:\MyDoc\Document1\Doc1\folder1\Thumbs.db ……SとH属性が付いている
A  SH        C:\MyDoc\Document1\Doc1\folder2\Thumbs.db
A  SH        C:\MyDoc\Document1\Doc1\Thumbs.db
A  SH        C:\MyDoc\Document1\Doc2\Thumbs.db
A  SH        C:\MyDoc\Document1\Thumbs.db

C:\MyDoc\Document1>del /s thumbs.db ……thumbs.dbファイルを再帰的に削除してみる
C:\MyDoc\Document1\thumbs.db が見つかりませんでした。  ……ファイルが見つからない

C:\MyDoc\Document1>del /s /a thumbs.db ……/aオプションを付けて再実行してみる
削除したファイル - C:\MyDoc\Document1\Thumbs.db ……thumbs.dbファイルを削除できた
削除したファイル - C:\MyDoc\Document1\Doc1\Thumbs.db
削除したファイル - C:\MyDoc\Document1\Doc1\folder1\Thumbs.db
削除したファイル - C:\MyDoc\Document1\Doc1\folder2\Thumbs.db
削除したファイル - C:\MyDoc\Document1\Doc2\Thumbs.db

C:\MyDoc\Document1>cd ..

C:\MyDoc>attrib /s *.dat ……S、H、Rの3つの属性を組み合わせた8つのファイル
A            C:\MyDoc\Document1\datafile1.dat
A  S         C:\MyDoc\Document1\datafile2.dat ……Sはシステム属性
A   H        C:\MyDoc\Document1\datafile3.dat ……Hは不可視属性
A  SH        C:\MyDoc\Document1\datafile4.dat
A    R       C:\MyDoc\Document1\datafile5.dat ……Rは読み取りのみ属性
A  S R       C:\MyDoc\Document1\datafile6.dat
A   HR       C:\MyDoc\Document1\datafile7.dat
A  SHR       C:\MyDoc\Document1\datafile8.dat

C:\MyDoc>dir /s *.dat ……dirで確認すると
 ドライブ C のボリューム ラベルは HDD です
 ボリューム シリアル番号は 213A-3D73 です

 C:\MyDoc\Document1 のディレクトリ

2017/01/19  17:29             6,109 datafile1.dat
2017/01/19  17:31           941,877 datafile5.dat
          2 個のファイル             947,986 バイト  ……ファイルが2つしか表示されない(全部確認するにはdir /aのようにする)

 ファイルの総数:
          2 個のファイル             947,986 バイト
          0 個のディレクトリ  29,600,194,560 バイトの空き領域

C:\MyDoc>del /s /a *.dat ……/aオプションを付けて、属性に関わらず削除してみる
削除したファイル - C:\MyDoc\Document1\datafile1.dat ……R属性のないファイルは削除できる
削除したファイル - C:\MyDoc\Document1\datafile2.dat
削除したファイル - C:\MyDoc\Document1\datafile3.dat
削除したファイル - C:\MyDoc\Document1\datafile4.dat
C:\MyDoc\Document1\datafile5.dat ……R属性の付いているファイルは削除できない
アクセスが拒否されました。
C:\MyDoc\Document1\datafile6.dat
アクセスが拒否されました。
C:\MyDoc\Document1\datafile7.dat
アクセスが拒否されました。
C:\MyDoc\Document1\datafile8.dat
アクセスが拒否されました。

C:\MyDoc>del /s /a /f *.dat ……/fを追加して実行してみる
削除したファイル - C:\MyDoc\Document1\datafile5.dat ……R属性付きのファイルも削除できる
削除したファイル - C:\MyDoc\Document1\datafile6.dat
削除したファイル - C:\MyDoc\Document1\datafile7.dat
削除したファイル - C:\MyDoc\Document1\datafile8.dat

C:\MyDoc>



「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

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

メールマガジン登録

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