1

我只是想知道:

如果上次修改不是今天,我如何删除“log.txt”?

带有批处理文件。

我只是在这里谈论 1 个文件!

4

5 回答 5

2

PowerShell 必须替换批处理。

if ((dir log.txt).LastWriteTime -lt [datetime]::today) { del log.txt }

于 2009-05-24T14:19:38.153 回答
1

不幸的是,您不能以稳健和通用的方式 (*) 执行此操作。

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
于 2009-05-24T14:38:28.910 回答
1

您可以使用forfiles

forfiles /D -1 /M log.txt /C "cmd /c del @file"
于 2009-05-24T15:24:57.740 回答
0

Batch 使简单的事情变得非常复杂。如果您可以使用 Cygwin 或安装 Unix 工具,请考虑执行以下操作:

find log.txt -mtime +1 -exec rm {} \;

更新发现使用纯批处理
可能对您有用的东西。您应该能够修改它并使其适应您的需求。

于 2009-05-24T14:27:12.723 回答
0

对于它的价值,您可以使用 jscript 或 vbscript。自 90 年代中期以来,这两种脚本语言都已安装在 MS 平台上

于 2009-05-24T17:59:21.500 回答