我正在尝试在批处理文件中编写一个执行以下操作的脚本:
我的代码是:
@echo off
for /f "delims=" %%a in ('dir /b /s /a:d "C:\project\" ^|findstr /e /i "\Mdata"') do (
@echo "%%~a"
setlocal
set target=%%a
set days=-30
for /f "usebackq delims=" %%G in (
`forfiles /p "%target%" /c "cmd /c if /i @isdir == true echo @path" /d %days% 2^>nul`
) do rd /s /q "%%~G"
endlocal & exit /b
)
pause
找到所有“Mdata”文件夹运行良好的第一项任务。 但删除不起作用。
答案 0 :(得分:1)
这应该照顾它。
我简化了您的脚本以删除内部FOR
循环,因为您可以使用FORFILES
命令执行删除。
@echo off
SETLOCAL
set days=-30
for /f "delims=" %%a in ('dir /b /s /a:d "C:\project\" ^|findstr /e /i "\Mdata"') do (
echo "%%~a"
forfiles /p "%%~a" /d %days% /c "cmd /c if /i @isdir==true echo @path & rd /s /q @path"
)
ENDLOCAL
pause
您的脚本无法正常工作的原因是您没有启用延迟扩展,因此target
和days
无法用于内部FOR
循环。尽管如此,您并不需要为您要完成的任务启用此功能。