我需要帮助...我试图简单地删除搜索文件夹(如果批量存在)。
批处理文件:
@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\"
答案 0 :(得分:1)
for /r
的众所周知的错误 - %%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
子例程提供“%% i”作为子例程:sub
的第一个参数(在这种情况下不需要引号 - 但如果传递的字符串包含分隔符)
:sub
将变量设置为提供的第一个参数的内容; ~
删除了引号。由于批处理将%var%
替换为变量的内容作为解析操作的一部分,因此它应该进行适当的替换。
BTW - 批处理开头的@echo off
语句使文件中@
多余(@
表示“执行前不要echo
此语句”< / p>