我需要根据上次访问时间删除所有文件(在所有文件夹和子文件夹中递归).
我正在查看Stack Overflow post Batch文件,删除超过N天的文件,建议这个答案:
forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"
Run Code Online (Sandbox Code Playgroud)
但是,这会根据上次修改时间而不是上次访问时间删除文件.
还有,有没有办法将命令保存在脚本文件中,所以我可以双击它来运行?
我们有这样的目录结构
..\文档名称_存档\YYYY\月份名称
例如,我们有许多子文件夹(在不同的文档名称文件夹中),名为 \2014\January ... 等
我们想要删除创建日期超过 180 天的所有文件夹及其内容。
我们更愿意只使用批处理文件脚本,但如果我们需要递归搜索,也许 VBScript 更好。
请问最好的办法是什么?
我看到旧帖子可以删除超过X天的文件,例如这个批处理文件可以删除超过N天的文件.我想为此添加一个额外的过滤器,这样如果我运行的备份没有发生2周,那么它就不会删除我的所有备份.
我知道这个:
forfiles -p "C:\what\ever" -s -m *.* -d <number of days> -c "cmd /c del @path"
Run Code Online (Sandbox Code Playgroud)
您可以删除超过X天但是如何添加上述条件并让它在删除之前留下最少的Z文件?
例:
假设我想删除超过14天的文件,但至少保留5个文件,其中包含以下文件:
Jan 1 - backup1.zip
Jan 2 - backup2.zip
Jan 3 - backup3.zip
Jan 4 - backup4.zip
Jan 5 - backup5.zip
Jan 6 - backup6.zip
Jan 7-20 no backups done
Jan 21st - script runs and removed old files
Run Code Online (Sandbox Code Playgroud)
使用示例代码删除超过14天的所有文件,我的所有备份文件都将被删除,而且我没有备份.我希望脚本看到只剩下6个文件,并保留至少5个文件.
合理?这可能通过Windows批处理文件?
提前致谢!
为了清晰
这是我的批处理文件的一部分:
cd /d %BKUPDIR%
FOR /f "skip=14 delims=" %%A IN ('DIR /a:-d /b /o:-d /t:c %1*.zip …Run Code Online (Sandbox Code Playgroud) 我现在有一个看起来无害的要求放在.bat文件中,我是第一次处理批处理代码...在这里找到一个处理类似内容的页面 ,但它以修改后的日期为参考。
在特定的文件夹X中,通过解析文件名删除所有早于N天的文件。其中文件名格式为Name_YYYYMMDD.log
但是请注意:1.不想以上次修改日期作为参考(其他程序/应用可能已访问/修改了日志)2.没有安装其他实用程序的权限。
编辑:
谢谢!。
之前已经提出过这个问题,我正在引用与此处建议相同的答案.但事实是,这在Windows 7终极版中运行良好,而相同的代码在Windows Server 2008 R2中无法正常工作.如果它找到任何比特定日期更早的文件,它会从文件夹中删除所有文本文件,但如果找不到任何比特定日期更早的文本文件,它就不会执行任何操作.命令如下;
REM Remove text files older than 5 days
forfiles -p "E:\Backups" -s -m *.* -d -5 -c "cmd /c del E:\Backups\*.txt"
Run Code Online (Sandbox Code Playgroud)
我也看过其他帖子,但我找不到这个特别的问题.如果有人在此之前遇到过这种情况,或者如果我在这里做错了,请建议解决方案,谢谢.