如何仅显示ping结果的状态 - 这里是"我的serverx是...固定只改变在线/离线状态。
**我的服务器1是......在线
**我的服务器2是......在线
**我的服务器3是......离线
我试着这个......但是失败了
@echo off
ping My server1|find "Reply from " >NUL
IF NOT ERRORLEVEL 1 echo Success
IF ERRORLEVEL 1 echo Fail
ping My server2|find "Reply from " >NUL
IF NOT ERRORLEVEL 1 echo Success
IF ERRORLEVEL 1 echo Fail
ping My server3|find "Reply from " >NUL
IF NOT ERRORLEVEL 1 echo Success
IF ERRORLEVEL 1 echo Fail
echo My server1 is ....%ver%
echo My server2 is ....%ver%
echo My server3 is ....%ver%
如何在此处设置变量以执行此操作。
感谢。
答案 0 :(得分:0)
您可以通过这种方式为每台服务器执行一行:
ping -n 1 server1 | find "TTL=" >NUL && echo server1 is online. || echo server1 is offline.
ping -n 1 server2 | find "TTL=" >NUL && echo server2 is online. || echo server2 is offline.
ping -n 1 server3 | find "TTL=" >NUL && echo server3 is online. || echo server3 is offline.
这基本上是
的简写ping -n 1 server1 | find "TTL=" >NUL
if not errorlevel 1 (
echo server1 is online.
) else (
echo server1 is offline.
)
...等等。如果您正在ping的主机是顺序的,您可以使用for /L
循环或类似代码来使用甚至更少的代码,如下所示:
for /L %%I in (1,1,254) do (
ping -n 1 192.168.0.%%I | find "TTL=" >NUL && echo 192.168.0.%%I is online. || echo 192.168.0.%%I is offline.
)
在cmd控制台中键入help for
,以获取有关for /L
。
修改:请参阅下面关于信任ping
以设置错误级别的MC ND的评论。即使上面问题中的示例寻找Reply from
也可能导致错误的成功。使用find "TTL="
设置errorlevel更可靠。
有关条件执行的更多信息,read this。