batファイルでフォルダ削除したい時に動かなくて困った事はありませんか?
サブフォルダまで削除したり、強制的にフォルダ削除したいなどの要望はありませんか?
ワイルドカードを使用して複数のフォルダ削除したいけどできるのかな。と言った疑問はないでしょうか?
そんなbatのフォルダ削除に関する疑問を、現役エンジニアの筆者が全て解決します。
windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。
この記事を読めばbatのフォルダ削除について、完璧に理解できます。
batでフォルダ削除する方法

batでフォルダ削除するコマンド
batでフォルダを削除するコマンドを以下にまとめます。
rmdir フォルダ名
これでフォルダ削除する事ができます。
また省略形の以下でも同じフォルダを削除できます。
rd フォルダ名
どちらか好きな方でフォルダ削除を行いましょう!
実践:batでフォルダ削除する
では実際にbatでフォルダ削除してみましょう!
環境としては下の図のような構成です。

batファイルと同じ階層にサブフォルダのない「test_dir1」、サブフォルダありの「test_dir2」、「test_dir3」が存在します。
以下のbatファイルを実行してフォルダ削除します。
@echo off
echo 削除
rd test_dir1
pause
削除
続行するには何かキーを押してください . . .
フォルダ環境を見てみると「test_dir1」が削除されています。

batでフォルダ削除が失敗する時の原因と対処法

フォルダ削除しようとした時に「ディレクトリが空ではありません」のメッセージが出てフォルダ削除できない事があります。
その原因としてはサブフォルダやフォルダ内にファイルが存在する事です。
先程の環境で以下のbatファイルを実行してみます。
@echo off
rem サブディレクトリがあれば削除しようとしてもできない
rd test_dir2
pause
実行した結果は以下となりました。
ディレクトリが空ではありません。
削除できていません。
対処法としてはオプションを付ける事で解消できます。
batでサブフォルダまで削除する方法
サブフォルダまで削除するコマンド
ではサブフォルダまで削除するオプションをご紹介します。
rmdir /s フォルダ名
/sオプションを付ける事でサブフォルダまで削除する事が可能です。
実践:サブフォルダまで削除する
先程の環境で以下のbatファイルを実行してみます。
@echo off
rem sオプションで確認ありでサブまで削除
rd /s test_dir2
pause
実行してみた結果は以下となりました。
test_dir2、よろしいですか (Y/N)? y
続行するには何かキーを押してください . . .
確認プロンプトが表示されて「y」を入力してエンターします。
サブフォルダごと削除できました。

batで強制的にサブフォルダまで削除する方法

強制的にサブフォルダまで削除するコマンド
サブフォルダまで削除する方法を教えました。しかし/sオプションだと「フォルダを削除してよろしいですか」と確認プロンプトが表示されて止まってしまいます。
batファイルで自動化したいのに止まっては困る事もあるでしょう。
そんな時は強制的にフォルダ削除するオプションを使用します。
rmdir /s /q フォルダ名
/qオプションを使用する事で強制的に削除する事が可能です。
実践:強制的にサブフォルダまで削除する
では先程の環境で以下のbatファイルを実行します。
@echo off
rem sオプションで確認なしで強制サブまで削除
rd /s /q test_dir3
pause
実行結果は以下となりました。

確認プロンプトが表示されることなく強制的にフォルダ削除する事ができました。
番外編:batでフォルダ削除する時にワイルドカードを使ってみる


複数のフォルダをワイルドカードを使用して削除する事は可能なのでしょうか?



では実際に試してみましょう!
以下の環境で以下のbatファイルを実行してみます。


@echo off
rd *
pause
実行した結果です。
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が間違っています。
続行するには何かキーを押してください . . .
batでワイルドカードを使用して複数のフォルダ削除はできませんでした。