0

我有一个.bat运行外部控制台程序的简单脚本,完成后会输出几​​行数据。

外部程序完成后,有没有办法在控制台输出中查找关键字。

例如:外部程序完成,.bat文件查找关键字:success,如果找到,则保存控制台输出,反之,如果关键字为:failed,则.bat程序退出。

4

1 回答 1

1

通常通过使用构造直接检查外部进程的返回码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不会输出任何匹配的文本,因为这不是您想要做的。

于 2012-05-22T20:51:24.300 回答