我正在使用Azure中的Windows Server 2012上的“系统启动”中的TaskScheduler执行batch file,并且观察到批处理启动后20-60秒没有networking。 目前我添加了一个不断的等待与ping,它大部分时间,但有时不工作。 你可以build议我一个更强大的方法来等待networking可用吗? (用于发送电子邮件和/或http请求)
使用“仅在此networking连接可用时启动”选项。 
你似乎打算使用批处理,所以在这里。 你可能想要由SO的人来运行它,因为他们比我更好的脚本编写者。 实际上,我从( https://stackoverflow.com/questions/21245545/ping-test-using-bat-file-trouble-with-errorlevel )得到了主要的逻辑,完成了testingping是否会通过的原因用这种方法对别人是可取的。
@echo off set IPaddress=%%1 REM add IP address as command line argument or just static :TEST ping -n 1 %IPaddress% | find "TTL=" >nul if errorlevel 1 ( goto RETRY ) else ( goto DOSTUFF ) :RETRY ping 127.0.0.1 -n 11>nul REM waits given amount of time, set to 10 seconds goto TEST :DOSTUFF do stuff REM Do stuff exit
基本上,它只是在一秒钟间隔,检查是否成功的ping发生。 如果是这样,它会做任何你想要的脚本。
我没有硬编码你想检查基本的ICMP连接的IP地址,而是把它作为一个命令行参数。 或者你可以硬编码。
你可能想仔细检查语法,因为我根本没有testing这个。
编辑:更改为11的值,以反映真正的10秒延迟。
根据超级用户的这个答案 ,您可以订阅您的计划任务到“networking可用”事件。
只要你不过滤一个特定的networking,我认为它应该工作。