批处理 forfiles 错误,路径未找到
批处理 forfiles 错误,路径未找到
我对批处理文件还是个新手,但我正在寻找一个删除超过30天的.txt日志文件的脚本...(值得一提的是,我使用的是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路径),但似乎什么都没有起作用...
至少有人能指导我正确的方向来理解这个错误信息吗?
Batch forfiles error path not found
在使用Batch中的forfiles命令时,可能会遇到"Batch forfiles error path not found"的错误。这个错误的出现原因是文件路径不存在或者无法找到。解决这个问题的方法是确保文件路径正确,并且在执行批处理文件时处于正确的工作目录。
在使用forfiles命令时,需要提供完整的文件路径和文件名。如果只提供文件名而不包括路径,那么批处理文件将无法找到文件,因为它在不同的工作目录中。
有时候,即使提供了正确的文件路径和文件名,仍然会出现"Batch forfiles error path not found"的错误。这可能是因为批处理文件没有在正确的工作目录中执行。为了解决这个问题,可以尝试切换到文件所在的目录,或者在批处理文件中使用完整的文件路径来执行操作。
另外,有时候使用反斜杠"\ "来表示路径,也会导致相同的错误。在这种情况下,可以尝试使用正斜杠"/"来代替反斜杠,或者使用双反斜杠"\"来表示路径。
总结起来,解决"Batch forfiles error path not found"错误的方法是确保提供了正确的文件路径和文件名,并且在执行批处理文件时处于正确的工作目录。如果仍然遇到这个错误,可以尝试使用不同的路径表示方式来解决。
问题的出现原因:在上述代码中,pushd
行将目录设置为适当的目录,但是如果该目录不存在,则会出现“Batch forfiles error path not found”的错误。
解决方法:确保pushd
行中设置的目录存在。如果目录不存在,可以手动创建该目录或者更改pushd
行的路径。
以下是修改后的代码示例:
off setlocal enabledelayedexpansion pushd "D:\SQL Database Back Ups\Update_FmlaManagement_Log" // 修改为正确的目录路径 if not exist "D:\SQL Database Back Ups\Update_FmlaManagement_Log" ( mkdir "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
通过以上修改,可以解决“Batch forfiles error path not found”的错误。