use*_*512 1 windows-7 batch command-line
这是我想要做的:
在 .cmd 脚本中使用 forfiles 命令从指定路径中删除比 win7 机器上早于 2 天的文件夹。
编辑: 路径 X 下的情况如下:\backups 是包含每日备份的文件夹,例如 25.06.2014 下一个文件夹 24.06.2014 等等。
我现在对此的问题是:
那么如何正确操作呢?
forfiles 的参考:http ://technet.microsoft.com/de-de/library/cc753551%28v=ws.10%29.aspx
你好!
尽管它的名字,该forfiles命令能够处理文件和文件夹。这是一个完成这项工作的批处理脚本:
@echo off
setlocal
set target=X:\backups
set days=-2
for /f "usebackq delims=" %%G in (
`forfiles /p "%target%" /c "cmd /c if /i @isdir == true echo @path" /d %days% 2^>nul`
) do echo rd /s /q "%%~G"
pause
endlocal & exit /b
Run Code Online (Sandbox Code Playgroud)
首先,初始化target和days变量。第一个设置为您要扫描的文件夹,后者是天数。负值意味着早于或等于。
forfiles然后通过指定之前设置的文件夹和天数来运行该命令。对于每个结果,@isdir检查特殊变量:如果值是true当前条目是文件夹,@path则回显其。然后解析命令输出以获取所有匹配的文件夹并删除它们。出于安全原因,还有一个额外的echo命令,您可以检查是否删除了正确的文件夹。
使用递归开关 ( /s) 时,将处理所有文件、文件夹及其子文件夹。在这种情况下,您不想;否则,您最终可能会删除新文件夹中包含的旧子文件夹,而这些子文件夹根本不应被触及。