检查输出是否正常

时间:2013-03-21 11:25:03

标签: windows for-loop batch-file cmd directory

我正在通过批处理文件从CMD运行命令..

echo Step 3. Check TNSPING
tnsping vtdbs 2>NUL
    if not errorlevel 1 set error=PASSED
    if errorlevel 1 set error=FAILED
echo Result: %error%

但是这只能告诉我它是否真的能够运行命令..当这个命令运行时它会给出一个这样的输出..

blah blah blah
blah blah blah
blah blah
blah blah
blah blah
blah blah
blah blah
OK (80 msec)

所以第8行应该说“OK”,只要它确实如此.. echo RESULT: Passed else echo RESULT: Failed

但不确定如何检查并查看第8行是否是“好”

2 个答案:

答案 0 :(得分:1)

试试这个:

@echo off &setlocal
set "result="
for /f %%i in ('tnsping vtdbs 2^>NUL^|more +7') do if not defined result set "result=%%i"
if "%result%" equ "OK" (set "error=PASSED") else set "error=FAILED"
echo Result: %error%
endlocal

答案 1 :(得分:1)

这是一个更有效的解决方案,如果tnsping vtdbs的输出是<> 8行。

echo Step 3. Check TNSPING
set "error=FAILED"
for /f %%I in ('tnsping vtdbs 2^>NUL') do (
    if "%%I"=="OK" (set "error=PASSED" & goto next)
)
:next
echo Result: %error%

您无需检查%%I是否与OK (??ms)匹配的原因是for /f默认为"tokens=1" - 或者换句话说,分配{{1}每行的第一个单词。