2016-11-19 11 views
0

私は助けを望まないです... imはバッチ上に存在する場合に単に検索フォルダを削除しようとしています。存在する場合はサブフォルダを一括削除

バッチファイル:

@for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO @if exist %%i: @for /d /r "%%i:\" %%a in (program\logs\) do if exist "%%a" echo rmdir /s /q "%%a" 

が、結果が正しくない

if exist "C:\%i:\program\logs\" echo rmdir /s /q "C:\%i:\program\logs\" 
for /r

答えて

1

よく知られたバグ - メタ変数でなくてもよい%%a前に提供するディレクトリのルート(すなわち制御外部ループからの変数)

考えられる回避策(未試行)

for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO if exist %%i: call :sub "%%i" 
.... 
goto :eof 

:sub 
set "targetdir=%~1" 
for /d /r "%targetdir%" %%a in (program\logs\) do if exist "%%a" echo rmdir /s /q "%%a" 
goto :eof 

goto :eofファイル内のコードの残りの部分の上にジャンプし(コロンが必要です)。 CALLサブルーチン:subの最初のパラメータとして「I %%」サブルーチンの供給をINGの(引用符は、この場合に必要とされていない - が、渡された文字列は、セパレータが含まれている場合であろう)

:sub内容に変数を設定します与えられた最初のパラメータの値。 ~は引用符を削除します。バッチは、構文解析操作の一部として変数の内容を%var%に置き換えるため、適切な置換を行う必要があります。ところで

- ?バッチの開始時に@echo off文は、ファイル内の@が冗長になり(@が「実行前にいないechoこの文を実行する意味)

+0

どれ回避策 –

+0

私は制限問題を呼びたいです、バグではありません。 – dbenham

+0

@dbenham:quirk? – Magoo

関連する問題