我正在通过批处理文件从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行是否是“好”
答案 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}每行的第一个单词。