admin管理员组文章数量:1625830
前言
前几天,一个朋友让我帮他做个脚本或者批处理,要实现的功能很简单:开机时检测网络是否联通,如果联通了就执行一个指定的程序,然后脚本就可以退出了。
批处理的解决方法
手动操作时,我们通常使用ping命令来检测网络是否正常。
但我测试了一下,ping命令返回的errorlevel值很多,且有些情况即使不通,返回的也是0,因此不能直接通过errorlevel的值来判断网络是否正常!
使用ping命令来实现,需要配合find等命令,但这不重要,重要的是批处理写出来感觉不太优雅..
批处理实现代码:
@echo off
:start_ping
ping -n 1 www.baidu | find "ms" >nul
if %errorlevel%==0 goto run_process
ping -n 2 127.0.0.1 >nul
goto start_ping
:run_process
start "" notepad.exe
上面的代码是网络 不通->通 时执行命令,如果是想 通->不通 时执行,只需要将==0改成==1即可
PowerShell脚本的解决方法
为了代码能优雅一点,于是我写了一个PowerShell的脚本,文件名为netTest.ps1,内容如下:
#循环检测网络是否正常
do{
sleep 1
$sky = Test-NetConnection -ComputerName "www.baidu"
}while(!$sky.PingSucceeded)
#网络正常后要执行的命令,例如这样:
start notepad.exe
这样看上去就优雅点了~
上面的代码是网络 不通->通 时执行命令,如果是想 通->不通 时执行,删掉代码中的感叹号 ! 即可
但是,PowerShell脚本不能直接放到启动项中,可以使用批处理来调用它,批处理内容:
@echo off
powershell iex .\netTest.ps1
将两个文件放在同一个文件夹中,如图:
在 调用.bat 上点击右键,然后选择“创建快捷方式”,将创建出来的快捷方式放入“启动”文件夹即可实现开机自动检测。快速打开启动文件夹的方法:
按下Win+R键,输入以下代码后确定:
shell:startup
如图:
版权声明:本文标题:Windows循环检测,直到网络通断后执行指定命令 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1728933206a1180475.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论