2016-11-19 56 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\" 

回答

1

馳名臭蟲以for /r - 所述%%a之前提供可以不是metavariable的根目錄(即,控制從外部循環變量)

可能的解決方法(未嘗試)

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荷蘭國際集團子程序用品「%% I」作爲第一個參數的子程序:sub(引號未在此情況下所需的 - 但如果被傳遞的字符串將是包含分離器)

:sub設置爲內容的可變提供的第一個參數; ~刪除引號。由於批處理將%var%作爲解析操作的一部分替換爲變量的內容,因此應進行適當的替換。

順便說一句 - 在一個批次的開始@echo off語句使@文件中的冗餘(@表示「不echo執行之前,這種說法)

+0

任何解決方法 –

+0

我會打電話的問題的限制,不是bug。 – dbenham

+0

@dbenham:一個怪癖? – Magoo

相關問題