我有一个运行外部控制台程序的简单.bat
脚本,完成后会输出几行数据。
在外部程序完成后,是否可以在控制台输出中查找关键字。
例如:
外部程序完成后,.bat
文件将查找关键字:success,如果找到它,则相反地保存控制台输出,如果关键字为:failed,则.bat
程序将退出。
答案 0 :(得分:1)
通常通过使用return code构造直接检查外部流程的IF ERRORLEVEL
来完成成功检查:
external.exe
IF ERRORLEVEL 4 GOTO error1
IF ERRORLEVEL 3 GOTO error2
IF ERRORLEVEL 2 GOTO error3
IF ERRORLEVEL 1 GOTO error4
REM if you reached this point, external.exe reported success
当然这取决于外部程序,因此您可能根本无法使用它。在这种情况下,您可以重定向外部程序的输出并使用find
来查找它; find
使用非零(不记得确切)返回代码来表示找不到目标字符串。所以你可以写:
external.exe | find >nul "success"
IF ERRORLEVEL 1 GOTO notfound
REM if you reached this point, "success" was present in the output
>nul
重定向确保find
实际上不会输出任何匹配的文本,因为这不是您想要做的。