我通过像这样一个批处理文件运行在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
其他echo RESULT: Failed
但不知道如何检查,看看8号线是..“OK”
这里的一个更有效的解决方案,也宽容如果输出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
到每一个的第一个字线。
尝试这个:
@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