Windows 7でバッチファイルを使用してディレクトリツリーを削除するにはどうすればよいですか?


36

バッチファイルを使用して、Windows 7の指定されたフォルダーのコンテンツ全体を削除したい。私の問題は、「del」または「erase」はファイルではなくフォルダのみを削除し、「rmdir」または「rd」は常に指定されたフォルダとそのコンテンツを削除するが、フォルダ自体ではなくコンテンツのみを削除することです。rmdir /S /Q "C:\Share\*"構文エラーが発生したコマンド「」を試しました。

これを行う正しい方法は何ですか?

私はWindows 7 Professional 64ビットで作業しており、管理者権限を持っています。

回答:


36

バッチファイルは2つのコマンドを実行する必要があります。1つはファイルをクリアし、もう1つは子ディレクトリを削除します。削除したいディレクトリはC:\Share\

バッチファイルは次のようになります。

del /s /f /q c:\share\*.*
for /f %%f in ('dir /ad /b c:\share\') do rd /s /q c:\share\%%f

del /s /f /q 確認を求めることなく、ディレクトリツリーを再帰的に検索して、ファイル(読み取り専用ファイルも含む)を削除します。

2行目はすべてのサブディレクトリ(空になっているはずです)をループし、それらを削除します。

フォルダ全体を削除して再作成する(アクセス許可のためにやりたくないと思いますか?)これは、フォルダをきれいにする最も簡単な方法です。


ここで「/ f %% fの場合」->「/ f%fの場合」で少し修正すると、問題なく動作します:)ありがとうございます。
マイケルK

6
del必要ありません。rd/s/qファイルとサブフォルダーの両方を削除します。
悲しみ

1
@grawityは、del主にルートフォルダー内のファイルに存在しますが、再帰スイッチを削除できます。
ウィンドス

5
@MichaelK、%% fはバッチファイルで使用するためのもので、%fはコマンドラインに直接1つのコマンドを送信する場合のものです。
ウィンドス

1
サブディレクトリ名のいずれかにスペースが含まれる場合、「delims =」を追加して正しく処理できます(/ f "delims =" %% f in ...):stackoverflow.com/q/5553040/64918
goldPseudo

27
rmdir /s/q C:\Share

rmdirワイルドカードではなく完全な名前のみを受け入れるため、「構文エラー」が発生します。(でcmd.exe、ワイルドカード拡張は個々のプログラムに任されています;すべてがそうするわけではありません。)

で始まるディレクトリが多数ある場合Share...は、forループを使用します。

for /d %f in (C:\Share*) do rmdir /s/q "%f"

3
共有フォルダーを削除しません。
マイケルK


2

どう?

rmdir /S /Q "target"
mkdir "target

編集:もちろん、このソリューションは、一時的なフォルダーの不在を許容できる場合にのみ適用されます。


これにより、元のフォルダーが削除されます。
マイケルK

@MichaelK私のタスクは一時的なフォルダーの不在を許容することができたので、このソリューションを使用しました。私の考えにfor /f似ている場合よりも簡単で読みやすいと思いました。ただ共有したかった
-Vasilly.Prokopyev

2
for /f "delims=" %%f in ('dir /ad /b c:\share\') do rd /s /q c:\share\%%f

サブディレクトリにスペースを含む他のディレクトリが含まれている場合、これは機能しません。

これを機能させるには、次のように最終的な文字列を引用する必要がありました

/ f "delims =" %% f in( 'dir / ad / bc:\ share \')do rd / s / q "c:\ share \ %% f"

どうやら、これにより、コマンドは文字列自体ではなく、引用符付き文字列で動作します。


0

すべてのサブフォルダーを削除する必要があるフォルダーでこれを試してみますが、ルート(およびルート内のファイル)はそのまま残します:for / D%v in(*)do rd / s / q%v

/ Dはディレクトリに一致し、rd / s / qはそれぞれを削除します


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.