验证 bat 文件中的多个输出
Verify multiple outputs in bat file
谁能告诉我如何验证 .bat 文件中的多个输出。
我正在使用
@echo off
:start
ping x.x.x.x | findstr "unreachable" > nul
if %errorlevel% == 0 (
echo "Network disconnect"
goto RestartLAN
) else (
echo "OK"
)
goto start
在这段代码中,我验证了 "unreachable" 那么我如何扩展行 ping 10.128.224.1 | findstr "unreachable" > nul
来验证输出 "timeout"、"general failure"。
将 ping 输出放入文本文件并执行多个 findstr。如果您不关心哪个错误,则 findstr 将搜索所有由空格分隔的术语。 findstr "timeout unreachable"
将匹配任何一个(尽管您应该指定开关以明确意图)。
Ping returns 0 表示错误,1 表示成功(我知道很奇怪)。
ping 128.0.0.1 && Echo Error (but for other commands means success) || Echo Success (but for other commands means error)
这与正常做法相反,其中 0 表示成功。
Findstr 也 returns 错误代码。 0 = 找到,1 = 未找到,2 = 错误。
ping 128.0.0.1 | findstr /i /c:"unreachable"
If errorlevel 0 if not errorlevel 1 Echo Findstr found host unreachable
If errorlevel 1 if not errorlevel 2 Echo Findstr didn't find unreachable
If errorlevel 2 if not errorlevel 3 Echo Cmd has badly screwed up file redirection else you'll never see this
演示:
@ECHO OFF
SETLOCAL
FOR %%a IN ("unreachable" "timeout" "general failure" "fine and dandy") DO (
ECHO %%~a|FINDSTR /c:"unreachable" /c:"timeout" /c:"general failure" >NUL
CALL ECHO ERRORLEVEL %%errorlevel%% FOR %%~a
)
GOTO :EOF
所以,
ping x.x.x.x | FINDSTR /c:"unreachable" /c:"timeout" /c:"general failure" >NUL
应该适合你的情况。
(ping x.x.x.x | find "TTL=" >nul) && (echo OK) || (echo FAILURE)
对于 ipv4,如果输出包含字符串 TTL=
则目标机器可以访问。
Here 您可以找到有关 ping
用法的更多信息。
谁能告诉我如何验证 .bat 文件中的多个输出。
我正在使用
@echo off
:start
ping x.x.x.x | findstr "unreachable" > nul
if %errorlevel% == 0 (
echo "Network disconnect"
goto RestartLAN
) else (
echo "OK"
)
goto start
在这段代码中,我验证了 "unreachable" 那么我如何扩展行 ping 10.128.224.1 | findstr "unreachable" > nul
来验证输出 "timeout"、"general failure"。
将 ping 输出放入文本文件并执行多个 findstr。如果您不关心哪个错误,则 findstr 将搜索所有由空格分隔的术语。 findstr "timeout unreachable"
将匹配任何一个(尽管您应该指定开关以明确意图)。
Ping returns 0 表示错误,1 表示成功(我知道很奇怪)。
ping 128.0.0.1 && Echo Error (but for other commands means success) || Echo Success (but for other commands means error)
这与正常做法相反,其中 0 表示成功。
Findstr 也 returns 错误代码。 0 = 找到,1 = 未找到,2 = 错误。
ping 128.0.0.1 | findstr /i /c:"unreachable"
If errorlevel 0 if not errorlevel 1 Echo Findstr found host unreachable
If errorlevel 1 if not errorlevel 2 Echo Findstr didn't find unreachable
If errorlevel 2 if not errorlevel 3 Echo Cmd has badly screwed up file redirection else you'll never see this
演示:
@ECHO OFF
SETLOCAL
FOR %%a IN ("unreachable" "timeout" "general failure" "fine and dandy") DO (
ECHO %%~a|FINDSTR /c:"unreachable" /c:"timeout" /c:"general failure" >NUL
CALL ECHO ERRORLEVEL %%errorlevel%% FOR %%~a
)
GOTO :EOF
所以,
ping x.x.x.x | FINDSTR /c:"unreachable" /c:"timeout" /c:"general failure" >NUL
应该适合你的情况。
(ping x.x.x.x | find "TTL=" >nul) && (echo OK) || (echo FAILURE)
对于 ipv4,如果输出包含字符串 TTL=
则目标机器可以访问。
Here 您可以找到有关 ping
用法的更多信息。