2017-05-12 10 views
0

私はその下に複数のサブフォルダがあるフォルダを持っています。サブフォルダ/例の下にあるすべてのテストフォルダを削除したいと思います。 Windowsバッチスクリプトを使用してこれを行うにはどうすればよいですか?いくつかの中にテストフォルダはありません。Windowsバッチスクリプトを使用してフォルダを再帰的に削除する

私はmainfolder/subfolder1/example/testの削除方法を知っています。しかし、各サブフォルダの下で再帰的に削除することに悩まされています。つまり、mainfolder/*/example/testを削除します。

TIA

例えば:

mainfolder 
    subfolder1 
     source 
     example 
      test 
    subfolder2 
     source 
     example 
      test 
    subfolderX 
     source 
     example 
+0

あなたの答えはありがとうございます...私はそれを動作させるために微調整を行う必要がない答えとして1つを選択しました。 – user1164061

答えて

1
for /r "c:\sourcedir" /d %a in (*) do if /i "%~nxa"=="test" echo rd /s /q "%a" 

- ダブル各%として使用しますバッチライン。 rdを必要

c:\sourcedirを交換するなどの適切な

は、彼が何をしたスクリプトをつもりかを示すために単にecho編です。実際に削除を実行するには、テスト後にechoキーワードを削除します。

1

私は、特にDIRss64.com's CMD.EXE reference見てFINDSTRをお勧めします、とFORコマンド。

for /f %i in ('dir /s /a:d /b ^| findstr /i /e "example\test"') do rmdir /s %i 

は、あなたが要求したものの適切なコマンドのようです。

注:/ S - サブディレクトリ、/ A:D - ディレクトリのみ( "属性:ディレクトリ")、/ B - "裸"、ヘッダーまたはフッター、完全なパス名。 FINDSTR

注:/ I - 大文字小文字を区別しない、/ E - コマンドのマッチの終わりの文字列

冗長記述的要約:すべてのサブディレクトリを含め、ディレクトリのリストを作成し、のみことを選択"example \ test"で終了し、その中のすべてのファイルとサブディレクトリを含めてそれぞれを削除します。

1
for /R "mainfolder" /D %%a in (example\te?t) do rd /S "%a" 

この方法の唯一の不便は、ターゲットフォルダの名前はワイルドカードとして与えられなければならないので、あなたが他の望ましくないフォルダが含まれていない名前を与えなければならないということです。名前にワイルドカードが指定されていない場合は、forコマンドに他のフォルダが含まれている可能性があります。

1

あなただけの主なディレクトリを反復処理し、削除したいディレクトリが存在するかどうかを確認する必要があります:プロンプトから直接

for /D %%d in (mainfolder\*) do if exist "%%d\example\test" rd /s /q "%%d\example\test" 
関連する問題