1

我是一个批处理文件的新手,但我正在寻找一个脚本来删除超过 30 天的 .txt 日志文件......(FWIW,我在 XP SP3 上......)

我尝试按照此处找到的示例(包括forfiles.exe此处下载)并最终得到以下结果:

forfiles -p"D:\SQL Database Back Ups\Update_FmlaManagement_Log" -s -m *.txt -d-30 -c "cmd /c del @FILE"

但我得到这个错误:

Error path not found (3rd argument) line 545

我做了很多谷歌搜索,但似乎无法弄清楚这个错误在说什么。 有人建议使用forfiles.exe它以@variables使其正常工作,但我尝试了(以及完整的 forfiles 路径),但似乎没有任何效果......

关于此错误消息告诉我的内容,至少有人可以指出我正确的方向吗?

4

4 回答 4

1

只是为了看看我是否可以,我拼凑了一些 sumn sumn 来删除超过 30 天的文件而不使用forfiles. 确保该pushd行设置为转到相应的目录。我2592000通过从 2013 年 1 月 31 日减去 01/01/2013 得到。

@echo off
setlocal enabledelayedexpansion

pushd "D:\SQL Database Back Ups\Update_FmlaManagement_Log"

set today=%date:~-10%
call :toEpoch %today%
set /a thirtyDaysAgo=%epoch% - 2592000

for /f "tokens=1,5*" %%I in ('dir /o:d *.txt ^| findstr "txt$"') do (
    call :toEpoch %%I
    if "%%K"=="" (set file=%%J) else (set file=%%J %%K)
    if /i %thirtyDaysAgo% GTR !epoch! del /q "!file!"
)
popd
goto :EOF

:toEpoch date
echo wscript.echo datediff("s", "01/01/1970 00:00:00", "%1")>epoch.vbs
for /f %%x in ('cscript /nologo epoch.vbs') do set epoch=%%x
del /q epoch.vbs
goto :EOF

(从Cameron Oakenleaf借来的 VBscript 。)

诚然,这不会像痴迷一样准确地工作。例如,如果一个日志文件最后一次修改是在 30 天前的中午,而您在上午 8:00 运行它,那么该文件可能会被删除,即使它还有 4 个小时才能达到 30 天。而且它可能不如 forfiles.exe 高效。

*shrug* 这是一条少有人走的路,我走过了。

编辑: HerbCSO 有另一个可能更好的实现,它使我的看起来像一个 Rube Goldberg-ian 解决方案。

于 2013-02-07T19:47:45.703 回答
1

@file 只是文件名。它不包括路径。如果您的批处理文件没有在您的路径中执行,它将看不到要删除的文件,因为您位于不同的工作目录中。

于 2013-02-07T20:27:46.040 回答
1

我不敢相信错误来自您的示例行。我的 forfiles (Win7) 为路径
之间的缺失空间引发错误。-p

并且错误消息的文本对于批处理命令是不正常的。
我不知道任何批处理命令可以告诉您发生错误的行,也不知道哪个参数是错误的。

因此,我相信您从完全不同的来源收到错误消息。
或者你有第二个forfiles命令可以做一些完全不同的事情。
或者您是否命名了您的一项测试forfiles.bat

于 2013-02-07T21:11:31.107 回答
1

好吧,我不是很肯定,但似乎问题可能forfiles.exe来自微软的FTP 服务器。我最终从这个人的网站直接下载forfiles.exe)下载了第二个(对于 Windows Server 2003 )。

在替换原始 exeC:\WINDOWS\system32并删除我的下载文件夹中的副本后,我将语法从破折号稍微更改为正斜杠,如下所示:

forfiles /p "D:\SQL Database Back Ups\Update_FmlaManagement_Log" /s /m *.txt /d -30 /c "cmd /c del @FILE"

这是完美的第一次尝试!

所以我猜答案是,不要forfile.exe从微软的 FTP 服务器下载?:P

编辑:

我很想知道其他人是否在上面的链接中成功使用了 Microsoft 的 .exe?否则,也许这只是我的特定设置...

于 2013-02-07T21:39:46.390 回答