【问题标题】:How to set variable in dos batch file that show only result如何在dos批处理文件中设置仅显示结果的变量
【发布时间】:2014-12-02 20:20:50
【问题描述】:

如何像这样只显示 ping 结果的状态-这里是“我的 serverx is...fixed 只更改在线/离线状态。

** 我的 server1 正在....在线

** 我的 server2 正在....在线

** 我的 server3 .... 离线

我尝试过这个..但失败了

@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%

如何在这里设置变量来做到这一点。

谢谢。

【问题讨论】:

  • 也许this 可以提供帮助

标签: batch-file


【解决方案1】:

您可以通过这种方式在每台服务器上使用一行:

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

【讨论】:

  • errorlevel 不是检查 ping 成功的可靠方法。在 ipv4 中,如果任何数据包丢失,则设置 errorlevel,并且 ping 同一 vlan 上的非活动机器将导致不可达机器,没有数据包丢失,也没有 errorlevel。 ipv6 的行为不同(更多 here
  • 我明白了。我刚刚在我的子网中 ping 了一个不存在的主机,并得到“来自(我的本地计算机)的回复:无法访问目标主机”,但 %ERRORLEVEL% 为 0。我喜欢你关注 TTL= 的想法。
  • @MCND 感兴趣的是,如果您要检查的是一组 Web 服务器,并且您想要一个脚本来检查每个服务器上的 HTTP 服务是否返回“200 OK”的状态", this question 有一个脚本可以做到这一点。很聪明!
  • 嗨 rojo,我很欣赏你的回答并努力做到。
猜你喜欢
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多