D:
ドライブにフォルダがあるとしましょう。
D:\Air
D:\Abonden
D:\All
D:\Whatever
"A"で始まるすべてのフォルダ(すべてのサブフォルダとファイルを含む)を削除します。私はこのコマンドを試してみました:
rmdir D:\A* /s /q
私は、エラーが出ます。
ファイル名、ディレクトリ名、またはボリュームラベルの構文が正しくありません。
del
コマンドは*
と連携しますが、フォルダも削除する必要があります。rmdir
コマンドでそれを達成する方法はありますか?
cd c:\temp
for /f %i in ('dir /a:d /s /b A*') do rd /s /q %i
これを使ってテストしてみましょう:
for /f %i in ('dir /a:d /s /b A*') do echo rd /s /q %i
これにより、実行するコマンドがコマンドプロンプトにパイプアウトされ、何が起こっているのかを確認できます。
「C:\ temp\jjj\aaa」などのサブフォルダも検索され、aaaフォルダが削除されることに注意してください。最上位のフォルダ "C:\ temp\aaa"だけを見たい場合は、コマンドから"/s"
を削除します。
その鍵は、検索文字列に入れるA *です。必要に応じて、これはaaa*
、aaa*
および*aaa*
などのワイルドカードを受け入れます。
rmdir
/rd
コマンドだけでは、 ワイルドカード文字 (つまり、*
および?
)はサポートされません。この制限をfor
ループでラップすることでこの制限を回避できます。
for /d %G in ("X:\A*") do rd /s /q "%~G"
注ファイルやフォルダーを削除するときは、最初にrd
コマンドをecho
に置き換えることをお勧めします。このようにして、実際に削除してはいけないものはすべて確実に削除できます。
異なるパターンに一致する複数のフォルダを削除するためには、構文はそれほど変わりません。 @ dbenhamが正しく指摘しているように、1行のコマンドで十分です。別のパスを指定することもできます。
for /d %G in ("X:\A*","Y:\Whatever\B*","Z:\C?D") do rd /s /q "%~G"
特定のフォルダが存在するかどうかを確認したい場合は、次のコマンドを使用できます。
dir /b /a:d "X:\A*" >nul 2>&1 && echo Folders exist. || echo No folders found.
OPにforfilesについてまだ誰も話していませんか。
forfiles /P D:\ /M A* /C "cmd /c if @isdir==TRUE rmdir /s /q @file"
/Pはパス名 - 検索を開始する場所 /Mは検索マスクです。Aで始まるファイルを検索する /Cは実行するコマンドです。 /Sは再帰的なサブフォルダーです(opは要求しなかったので、ここには含めませんでした)。
adn31415の答えは正しいですが、これをバッチまたはcmdスクリプトに入れると失敗します。私はこれがあなたがそれを使用する方法であることを理解するまで私は何時間も頭をぶつけた。
DOSコマンドウィンドウの場合:
for /d %G in ("X:\A*") do rd /s /q "%~G"
バッチまたはcmdスクリプトの場合:
for /d %%G in ("X:\A*") do rd /s /q "%%~G"
それを「.bat」または「.cmd」ファイルに入れたい場合は、「%」文字を2倍にする必要があります。