Batch file 此批处理文件中有什么错误?
我正在尝试在批处理文件中编写一个脚本,该脚本执行以下操作:Batch file 此批处理文件中有什么错误?,batch-file,Batch File,我正在尝试在批处理文件中编写一个脚本,该脚本执行以下操作: 在“C:\Project”中找到名为“Mdata”的所有文件夹 删除“Mdata”中超过30天的所有文件夹 我的代码是: @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 "use
@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”文件夹的第一个任务工作正常。
但是删除不起作用。这应该会解决它。 我简化了您的脚本,删除了内部的
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
脚本无法工作的原因是您没有启用延迟扩展,因此
目标
和天数
将无法用于内部for
循环。尽管如此,您不需要为您试图完成的任务启用此功能。可能重复感谢您的工作,它工作正常。现在,我正在尝试将删除之前所有目录的路径(字符串)发送到Excel文件:如果我在“forfiles”循环中添加:“echo@path>>path_Deleted.xls”是否有效@Jason Faulkner。问题是:它向Excel发送“Mdata”文件夹,而不是删除的文件夹字符串!要查看已删除文件夹的名称,我应该将“echo”%%~a“>>路径_Deleted.xls”放在哪里@Jason Faulkner.@YWATFA-Excel是二进制格式,因此您无法将输出直接发送到XLS格式。