2016-11-19 68 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

相关问题