我可以为这个已经很有价值的线程添加一个不起眼的贡献吗?我发现其他解决方案可能会删除实际的错误文本,但忽略了表示我的应用程序失败的 %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
在其他代码中间的批处理文件的上下文中,使用 oneliner 将 ERRORLEVEL 保持为零以便成功(ver > nul 重置 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||ver > nul
对于 SQL Server 代理 CmdExec 作业步骤,我选择了以下内容。我不知道这是否是一个错误,但步骤中的 CmdExec 只识别第一行代码:
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%