找不到批处理文件错误路径

时间:2013-02-07 18:38:17

标签: batch-file

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

我尝试按照here找到的示例,(包括从here下载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

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

有人至少可以指出我这个错误信息告诉我的正确方向吗?

4 个答案:

答案 0 :(得分:1)

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

@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

(VBscript借鉴Cameron Oakenleaf。)

不可否认,这不会准确无误。例如,如果日志文件是在30天前中午最后一次修改的,并且您在上午8:00运行该文件,则该文件可能会被删除,即使它还有4个小时可以达到30天。而且它可能没有forfiles.exe那么高效。

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

编辑: HerbCSO有另一个,可能是better implementation,这使我看起来像Rube Goldberg-ian解决方案。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

我无法相信错误来自您的样本行 我的forfiles(Win7)为-p和路径之间的缺失空间引发了错误。

批处理命令的错误消息文本不正常 我不知道任何批处理命令告诉你错误发生的行,也不知道哪个参数错误。

所以我相信你从一个完全不同的来源得到了错误信息 或者你有第二个forfiles命令完成其他任务。
或者您是否将其中一个测试命名为forfiles.bat

答案 3 :(得分:1)

好吧,我不是肯定的,但似乎这个问题可能是来自微软FTP server的错误forfiles.exe。我最终从this guy's sitedirect download)下载了第二个forfiles.exe(对于Windows Server 2003)。

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

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

这首先尝试完美!

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

修改

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