バッチファイルでファイルやフォルダの削除を試してみました。
バッチファイルを使ってファイルやフォルダを自動で削除できると以下のような場面で便利です。
- 作業用フォルダにある不要なファイルを定期的に削除する場合
- バッチファイルの処理が終わったあとに一時ファイルを削除する場合
1.ファイルを削除する
以下の内容のバッチファイルを作成します。
del C:\test\test.txt
pause
このコマンドでは、test_folder フォルダ内にある test.txt を削除します。
バッチファイルは、テキストファイル(拡張子が.txt)をメモ帳などを開きコマンドを記載して、その後拡張子を「.bat」に変更してバッチファイルを作成してください。
上記の内容で作成したバッチファイルを実行してみます。
実行前には test_folder フォルダ内に test.txt があります。

実行後にはファイルが削除されていることがわかります。

1-1. 複数ファイルを削除する
del コマンドでは、ワイルドカードを使って複数のファイルを削除することもできます。
例えば、C:\test にある .txt ファイルをすべて削除する場合は、以下のように記載します。
del C:\test\*.txt
pause
実際に実行してみると以下のようになります。
C:\test には .txt のファイルが2つありますが、バッチファイル実行後に削除されたことがわかります。
C:\>dir /b c:\test
data.csv
sample.txt
test.txt
C:\>test.bat
C:\>del C:\test\*.txt
C:\>pause
続行するには何かキーを押してください . . .
C:\>dir /b c:\test
data.csv
他にも .csv など、特定の拡張子だけを削除したい場合にも使えます。
2.フォルダの削除コマンド
次にフォルダを削除します。
ファイルの削除コマンドと少し異なり、フォルダの削除は rmdir コマンドを利用して実行できます。
Rmdir C:\test\test_folder
pause
このコマンドでは、
test フォルダ内にある test_folder フォルダを削除します。
2-1. コマンドの実行
コマンドを実行してみます。
実行前には test フォルダ内に test_folder フォルダがあります。

実行後には削除されました。

フォルダが削除されていることが確認できます。
3.フォルダの中身もまとめて削除する
フォルダの中にファイルやサブフォルダが入っている場合、単純に rmdir を実行しても削除できないことがあります。
例えば、以下のようにフォルダの中にサブフォルダがある構成です。
C:\test
├ test.txt
└ sample
└ sample.txt
この時に以下のようにオプションを指定せずに実行するとサブフォルダ内のファイルなどは削除されません。
del C:\test
pause
C:\>dir /b /s c:\test
c:\test\sample
c:\test\test.txt
c:\test\sample\sample.txt
C:\>
C:\>test.bat
C:\>del C:\test
C:\test\*、よろしいですか (Y/N)? y
C:\>pause
続行するには何かキーを押してください . . .
C:\>dir /b /s c:\test
c:\test\sample
c:\test\sample\sample.txt
サブフォルダ内のファイルも削除したい場合はオプション /s を指定します。
rmdir /s C:\test
pause
/s を付けることで、指定したフォルダだけではなく、その中にあるファイルやサブフォルダもまとめて削除できます。
実際に実行してみます。
C:\>dir /b /s c:\test
c:\test\sample
c:\test\test.txt
c:\test\sample\sample.txt
C:\>test.bat
C:\>del /s C:\test
C:\test\*、よろしいですか (Y/N)? y
削除したファイル - C:\test\test.txt
C:\test\sample\*、よろしいですか (Y/N)? y
削除したファイル - C:\test\sample\sample.txt
C:\>pause
続行するには何かキーを押してください . . .
C:\>dir /b /s c:\test
c:\test\sample
サブフォルダ内のテキストファイルも削除されました。
4.確認メッセージを表示せずにフォルダを削除する
上記のコマンド実行時にもありましたが、ファイル削除の場合には、確認が求められることがあります。
このとき /q を指定すると、確認メッセージを表示せずに削除できます。
rmdir /s /q C:\test
実際に実行するとか確認が求められなくなっていることがわかります。
C:\>dir /b /s c:\test
c:\test\sample
c:\test\test.txt
c:\test\sample\sample.txt
C:\>test.bat
C:\>del /s /q C:\test
削除したファイル - C:\test\test.txt
削除したファイル - C:\test\sample\sample.txt
C:\>pause
続行するには何かキーを押してください . . .
C:\>dir /b /s c:\test
c:\test\sample
このオプション /q は、バッチファイルから自動的にフォルダを削除したい場合には便利です。
ただ、このコマンドは指定したフォルダと、その配下のファイル・フォルダを確認なしで削除しますのでコマンド実行の際には、コマンド内容をしっかりと確認してから実行するようにしたほうがよいです。
5.まとめ
今回は、バッチファイルを使ってファイルやフォルダを削除する方法をまとめました。
ファイルを削除する場合はdelを使用します。
del C:\test\test.txt
複数のファイルを削除する場合は、ワイルドカードも使用できます。
del C:\test\*.txt
フォルダを削除する場合は rmdir を使用します。
rmdir C:\test\test_folder
フォルダの中身もまとめて削除する場合は、/s を付けます。
rmdir /s C:\test
確認なしで削除する場合は /q を付けます。
rmdir /s /q C:\test
特に /q やワイルドカードを使用すると、意図しないファイルまで削除してしまう可能性がありますので実行する際には、バッチファイル内のコマンドの確認をしましょう。
