我有一个.bat
运行外部控制台程序的简单脚本,完成后会输出几行数据。
外部程序完成后,有没有办法在控制台输出中查找关键字。
例如:外部程序完成,.bat
文件查找关键字:success,如果找到,则保存控制台输出,反之,如果关键字为:failed,则.bat
程序退出。
我有一个.bat
运行外部控制台程序的简单脚本,完成后会输出几行数据。
外部程序完成后,有没有办法在控制台输出中查找关键字。
例如:外部程序完成,.bat
文件查找关键字:success,如果找到,则保存控制台输出,反之,如果关键字为:failed,则.bat
程序退出。
通常通过使用构造直接检查外部进程的返回码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
不会输出任何匹配的文本,因为这不是您想要做的。