当你请求文件的日期/时间属性时,即使使用WSH\Jscript\VBscript作为WSH也不会返回日期对象,但是依赖于时间设置的字符串(wmi可能是使用,但这将达到性能).我想你已经安装了.net框架,这使得任务变得更加容易.
这是 一个适用于您的情况的混合工具.您可以使用您想要的任何名称保存它.以下是如何使用它(FileDateFilterJS.bat在本例中称为):
@echo off
for /f "tokens=* delims=" %%# in ('FileDateFilterJS.bat "." -hh -5') do (
echo deleting "%%~f#"
echo del /q /f "%%~f#"
)
pause
Run Code Online (Sandbox Code Playgroud)
小时为5 - -hh -5目录为当前 - ".".您可以删除echo之前的del命令.
这个脚本花了我比我预期的更多的时间(尽管我已经研究了这个主题,并准备好了一些部分)并且没有经过如此严格的测试,所以可能仍然没有无错误.我想这个帮助信息和选项可以得到改善.
这里的任何解决方案都不适合我。它们是非常创新的解决方案,第一个 (.net/FileTimeFilerJS.bat [sic]) 实际上对我有用过一次。然而,当我试图在另一个文件夹上调用它时,它只是崩溃了。我尝试了第二个 (jscript/FileTimeFilterJs.bat),但它没有成功删除超过一小时的所有文件。
我的解决方案需要一个可执行文件,但我发现它对我来说是最好的解决方案。
我下载的findutils从的GnuWin32,并提取3个文件(你必须下载以下两个拉链):libintl3.dll,libiconv2.dll和FIND.EXE(合并他们1MB左右的大小)。我将 find.exe 重命名为 gnu_find.exe 只是为了避免 Windows FIND 命令。
然后,您可以运行漂亮的 GNU 命令(以下命令适用于环境变量 %fldr% 指定的文件夹中超过 120 分钟的所有 zip 文件):
gnu_find %fldr% -name *[.:]zip -type f -mmin +120 -delete
Run Code Online (Sandbox Code Playgroud)
我使用 *[.:]zip 而不是 *.zip,因为 Windows 7+ 会在 find 使用它之前扩展 *.zip。