Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 暂停批处理文件,直到可以访问主机为止(使用ping)?_Loops_Batch File_Ping_Host_Openvpn - Fatal编程技术网

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

Loops 暂停批处理文件,直到可以访问主机为止(使用ping)?,loops,batch-file,ping,host,openvpn,Loops,Batch File,Ping,Host,Openvpn,我希望为我一直在编写的批处理文件添加一些功能; 基本上,我使用openvpn拨打VPN连接,然后继续挂载网络驱动器以及其他许多事情,我希望做的是: 通过OpenVPN拨号连接(我的工作正常) Ping VPN另一端的主机,在访问该主机之前不要继续批处理文件 目前我一直在使用一个20秒的睡眠命令,这是有效的,但不是一个非常干净或智能的方法;我想我需要某种循环来尝试无限地ping主机,直到它可以访问为止,然后再继续批处理文件。任何帮助都将不胜感激。来自stackoverflow上的antoher

我希望为我一直在编写的批处理文件添加一些功能; 基本上,我使用openvpn拨打VPN连接,然后继续挂载网络驱动器以及其他许多事情,我希望做的是:

  • 通过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.