Loops 暂停批处理文件,直到可以访问主机为止(使用ping)?
我希望为我一直在编写的批处理文件添加一些功能; 基本上,我使用openvpn拨打VPN连接,然后继续挂载网络驱动器以及其他许多事情,我希望做的是:Loops 暂停批处理文件,直到可以访问主机为止(使用ping)?,loops,batch-file,ping,host,openvpn,Loops,Batch File,Ping,Host,Openvpn,我希望为我一直在编写的批处理文件添加一些功能; 基本上,我使用openvpn拨打VPN连接,然后继续挂载网络驱动器以及其他许多事情,我希望做的是: 通过OpenVPN拨号连接(我的工作正常) Ping VPN另一端的主机,在访问该主机之前不要继续批处理文件 目前我一直在使用一个20秒的睡眠命令,这是有效的,但不是一个非常干净或智能的方法;我想我需要某种循环来尝试无限地ping主机,直到它可以访问为止,然后再继续批处理文件。任何帮助都将不胜感激。来自stackoverflow上的antoher
- 通过OpenVPN拨号连接(我的工作正常)
- Ping VPN另一端的主机,在访问该主机之前不要继续批处理文件
目前我一直在使用一个20秒的睡眠命令,这是有效的,但不是一个非常干净或智能的方法;我想我需要某种循环来尝试无限地ping主机,直到它可以访问为止,然后再继续批处理文件。任何帮助都将不胜感激。来自stackoverflow上的antoher线程。。。归功于paxdiablo(找到原始帖子)
这将为您提供足够的弹药来使用和解决您的问题如果您使用您的语言用于单词Received的字符串来翻译“Received”字符串(即意大利语为Ricevuti)。如多年前所述,
ping
的输出取决于语言,因此,依赖像Received
这样的字符串不是一个好主意。首选且最可靠的方法是搜索字符串TTL=
:
:loop
timeout 2
ping -n 1 %ipaddress% |find "TTL=" || goto :loop
echo Answer received.
|
的作用类似于“如果上一个命令(find
)未成功,则”
(至于
超时
:切勿在没有空闲时间的情况下构建循环以减少CPU负载)这不适用于非英语窗口,因为ping在其他版本中被翻译!在西班牙语中,这是一个很好的答案。我喜欢这个。很好用!
:loop
timeout 2
ping -n 1 %ipaddress% |find "TTL=" || goto :loop
echo Answer received.