批处理脚本循环删除目录

时间:2018-07-11 08:43:45

标签: windows batch-file

我必须删除自动创建的目录。每个目录的名称都具有相同的前缀和内部版本号。脚本应采用参数,并删除整个目录中包含小于参数或等于参数的数字。我已经写过类似的东西,但是没有用。我的脚本仅删除第一个目录。

@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.----------------"
    )
)

1 个答案:

答案 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条件)