0

我正在通过像这样的批处理文件从 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 elseecho RESULT: Failed

但不确定如何检查第 8 行是否为 ..“OK”

4

2 回答 2

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
于 2013-03-21T11:56:53.670 回答
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"-- 或者,换句话说,分配%%I给每行的第一个单词。

于 2013-03-21T12:38:29.240 回答