CMD 如果 ping 成功则执行此操作

Reu*_*r00 3 windows cmd

我遇到了我无法理解的情况,我正在尝试执行一个批处理文件,其中他循环 200 次,并且在每个循环中他 ping 主机,如果 ping 成功,他会执行一个命令。这是我得到的:

    @echo off
for /L %%N IN (1, 1, 200) DO (
    ping -n 1 192.1.22.%%N
    if not ERRORLEVEL 1 (
        set pingresult=true
        goto done
    )
)

set pingresult=false
:done
if %pingresult% == true (
 echo Pikachu


) else (
  echo "Offline!"
)
Run Code Online (Sandbox Code Playgroud)

它不起作用。

Reu*_*r00 6

感谢 aschipfl 我找到了答案!

你只需要在命令| find "TTL=" >nul之后使用ping,因为这样如果 ping 成功,他就会传递一个 TTL,并且| find "TTL=" >nul将 grep 它进行验证。这是我从网站上获得解决方案的示例。

ping -n 1 192.168.1.1 | find "TTL=" >nul
if errorlevel 1 (
    echo host not reachable
) else (
    echo host reachable
)
Run Code Online (Sandbox Code Playgroud)