我正在尝试使用此命令删除超过14天的文件:forfiles /P "Path\To\Files" /S /M *.txt /D -14 /C "cmd /c del @path"
这是我在尝试删除文件时遇到的错误:ERROR: No files found with the specified search criteria.
有没有办法处理此错误或抑制它?原因是因为我在jenkins上使用此命令,并且由于此命令而导致构建失败。感谢。
我也查看了ERRORLEVEL并使用了以下代码,但它仍然给了我错误:
forfiles /P "Path\To\Files" /S /M *.txt /D -14 /C "cmd /c del @path" | find "ERROR" >nul2>nul
if not ERRORLEVEL 1 (
echo. Uh oh, something bad happened
exit /b 1
)
答案 0 :(得分:1)
您可以创建goto标签以检查错误。只需将call:checkerrors
放在需要检查错误的任何行之后。
forfiles /P "Path\To\Files" /S /M *.txt /D -14 /C "cmd /c del @path"
call:checkerrors
goto :eof
:checkerrors
if %errorlevel% neq 0 (
echo. Uh oh, something bad happened
exit /b 0
)
goto :eof
答案 1 :(得分:0)
您可以将此错误排序,保留所有其他ERROR
条消息:
forfiles /P "Path\To\Files" /S /M *.txt /D -14 /C "cmd /c del @path" 2>&1|find /v "ERROR: No files found with the specified search criteria." | find "ERROR" >nul2>nul
编辑只有STDOUT通过管道传输到find
,因此错误消息会保留在屏幕上。编辑也将STDERR写入STDOUT,以便find
可以处理它。
答案 2 :(得分:0)
如果ERROREVEL与0不同,则构建被视为失败。
forfiles /P "Path\To\Files" /S /M *.txt /D -14 /C "cmd /c del @path" | find "ERROR" >nul2>nul
if not ERRORLEVEL 0 (
echo. Uh oh, something bad happened
exit /b 0
)
这也是Gnatcheck等工具的问题,系统地将ERRORLEVEL与0不同,其中Jenkins等待0继续而不会出错。
答案 3 :(得分:0)
我发现有些方法可以解决你所问的问题,因为我自己遇到了同样的问题 - 在其他地方发布了几次。我发现其他解决方案可能会删除实际的错误文本,但忽略了%ERRORLEVEL%,这表示我的应用程序出现故障。只要它不是“找不到文件”错误,我合法地想要%ERRORLEVEL%。
一些例子:
专门调试并消除错误:
forfiles /p "[file path...]\IDOC_ARCHIVE" /s /m *.txt /d -1 /c "cmd /c del @path" 2>&1 | findstr /V /O /C:"ERROR: No files found with the specified search criteria."2>&1 | findstr ERROR&&ECHO found error||echo found success
使用oneliner返回ERRORLEVEL成功或失败:
forfiles /p "[file path...]\IDOC_ARCHIVE" /s /m *.txt /d -1 /c "cmd /c del @path" 2>&1 | findstr /V /O /C:"ERROR: No files found with the specified search criteria."2>&1 | findstr ERROR&&EXIT /B 1||EXIT /B 0
对于SQL Server代理CmdExec作业步骤,我登陆了以下内容。我不知道它是否是一个bug,但步骤中的CmdExec只识别第一行代码。此外,CmdExec不喜欢2>& 1重定向stderr所以我用cmd / c封装了所有内容。
cmd /e:on /c "forfiles /p "C:\SQLADMIN\MAINTREPORTS\SQL2" /s /m *.txt /d -1 /c "cmd /c del @path" 2>&1 | findstr /V /O /C:"ERROR: No files found with the specified search criteria."2>&1 | findstr ERROR&&EXIT 1||EXIT 0"&exit %errorlevel%