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

标签 loops batch-file ping host openvpn

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

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

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

最佳答案

来自 stackoverflow 上的其他线程...归功于 paxdiablo(找到原始帖子 here)

@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

这会给你足够的弹药来解决你的问题

关于loops - 暂停批处理文件直到可以访问主机(使用 ping)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14637892/

相关文章:

python - PostParameters 列表(Python 请求)

php - 在循环中使用 PHP 邮件强制用户等待页面显示

java - 使用在运行时创建的批处理文件并将其作为 jar 文件的输入提供

蓝牙 Ping 延迟

java - Java 中的 isReachable 似乎没有按照预期的方式工作

Python 在循环中支持 `else`。 Ruby 中是否有类似的功能?

Python - 迭代未知数量的变量

batch-file - 将包括结果在内的整个命令重定向到 .txt 文件

windows - 在批处理文件中打印数组元素值

objective-c - 如何在 Cocoa/Objective-C 中编写 Ping 方法?