我只是想知道:
如果上次修改不是今天,我如何删除“log.txt”?
带有批处理文件。
我只是在这里谈论 1 个文件!
PowerShell 必须替换批处理。
if ((dir log.txt).LastWriteTime -lt [datetime]::today) { del log.txt }
不幸的是,您不能以稳健和通用的方式 (*) 执行此操作。
Powershell、Cygwin、Unix 工具是非常好的解决方案,如果您可以确定它们会安装在目标机器上。
我编写了一个小实用程序,它采用带有通配符和天数的路径,并删除与该路径匹配且早于指定天数的所有文件。在我的环境中,这比安装 3rd 方包更方便。
(*) 只要您的区域设置中的短日期格式包括世纪(即 10 个字符长),以下将适用于您的特定情况(修改日期不是今天)。但这并不能概括N天,而且我不喜欢依靠计算机的区域设置来进行这种事情:
for %%i in (log.txt) do SET FILETIME=%%~ti
IF NOT "%FILETIME:~0,10%" == "%DATE%" DEL /f log.txt
您可以使用forfiles
:
forfiles /D -1 /M log.txt /C "cmd /c del @file"
Batch 使简单的事情变得非常复杂。如果您可以使用 Cygwin 或安装 Unix 工具,请考虑执行以下操作:
find log.txt -mtime +1 -exec rm {} \;
更新发现使用纯批处理
可能对您有用的东西。您应该能够修改它并使其适应您的需求。
对于它的价值,您可以使用 jscript 或 vbscript。自 90 年代中期以来,这两种脚本语言都已安装在 MS 平台上