暂停批处理文件,直到主机可以访问(使用ping)?

Kan*_*les 1 loops host ping batch-file openvpn

我想为我一直在写的批处理文件添加一些功能; 基本上发生的事情是我使用openvpn拨打VPN连接,然后继续安装网络驱动器以及许多其他东西,我想要做的是:

  • 通过OpenVPN拨打连接(我工作正常)
  • 在VPN的另一端ping主机,并且在该主机可访问之前不要继续通过批处理文件.

目前我一直在使用20秒的睡眠命令,但它并不是一种非常干净或智能的方式.我想我需要某种循环来尝试无限地ping主机,直到它在继续批处理文件之前可以访问.任何帮助将不胜感激.

spo*_*oky 9

从stackoverflow上的antoher线程...信用到paxdiablo(在这里找到原始帖子)

@setlocal enableextensions enabledelayedexpansion
@echo off
set ipaddr=%1
:loop
set state=down
for /f "tokens=5,7" %%a in ('ping -n 1 !ipaddr!') do (
    if "x%%a"=="xReceived" if "x%%b"=="x1," set state=up
)
echo.Link is !state!
ping -n 6 127.0.0.1 >nul: 2>nul:
goto :loop
endlocal
Run Code Online (Sandbox Code Playgroud)

这将为您提供足够的弹药来解决您的问题

  • 这不适用于非英语Windows,因为ping已在其他版本中翻译! (2认同)