我必须删除自动创建的目录。每个目录的名称都具有相同的前缀和内部版本号。脚本应采用参数,并删除整个目录中包含小于参数或等于参数的数字。我已经写过类似的东西,但是没有用。我的脚本仅删除第一个目录。
@echo Off
G:
cd G:\UAT
setlocal EnableDelayedExpansion
for /D %%i in (buildnr_*) do (
set dirName=%%i
set dirNumber=!dirName:~8,5!
if !dirNumber! LEQ %1 (
rimraf buildnr_!dirNumber!
echo "----------------buildnr_!dirNumber! has been removed.----------------"
)
)
答案 0 :(得分:0)
这样的方法可能对您有用:
@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
If "%~1"=="" Exit /B
CD /D "G:\UAT" 2>Nul || Exit /B
RD "empty" 2>Nul
MD "empty"
For /D %%A In ("buildnr_*") Do (
Set "bn=%%A"
SetLocal EnableDelayedExpansion
If !bn:~-5! LEq %~1 (
RoboCopy /MIR "empty" "%%A" >Nul 2>&1
RD "%%A" && (
Echo "--------------- %%A has been removed. ---------------"
)
)
EndLocal
)
RD "empty"
我已经检查了输入参数%1
是否已传递给脚本,这一点很重要,您有责任验证其内容是正确的字符串格式/长度/类型, (特别注意LEq
条件)。