批处理文件,用于删除超过N小时或分钟的文件

hou*_*tze 1 batch-file

我看到了 - 批处理文件删除N天以前的文件

但是如何删除超过N小时或分钟的文件?

谢谢.

npo*_*aka 5

当你请求文件的日期/时间属性时,即使使用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命令.

这个脚本花了我比我预期的更多的时间(尽管我已经研究了这个主题,并准备好了一些部分)并且没有经过如此严格的测试,所以可能仍然没有无错误.我想这个帮助信息和选项可以得到改善.

  • FSO.GetFile.DatePropertyOfSomeSort似乎为我处理了Date()对象数学。有关示例,请参见[此答案](http://stackoverflow.com/a/27297874/1683264)。我几乎不愿意指出这一点,因为您似乎在JSC混合动力系统中投入了大量时间和精力。`o°/` (2认同)

Dan*_*Dan 5

这里的任何解决方案都不适合我。它们是非常创新的解决方案,第一个 (.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。

找到实用工具箱

查找 Utils deps