Windows循环检测,直到网络通/断后执行指定命令

前言

前几天,一个朋友让我帮他做个脚本或者批处理,要实现的功能很简单:开机时检测网络是否联通,如果联通了就执行一个指定的程序,然后脚本就可以退出了。

批处理的解决方法

手动操作时,我们通常使用ping命令来检测网络是否正常。

但我测试了一下,ping命令返回的errorlevel值很多,且有些情况即使不通,返回的也是0,因此不能直接通过errorlevel的值来判断网络是否正常! 

使用ping命令来实现,需要配合find等命令,但这不重要,重要的是批处理写出来感觉不太优雅..

批处理实现代码:

@echo off
:start_ping
  ping -n 1 www.baidu.com | 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.com"
}while(!$sky.PingSucceeded)

#网络正常后要执行的命令,例如这样:
start notepad.exe

这样看上去就优雅点了~

上面的代码是网络 不通->通 时执行命令,如果是想 通->不通 时执行,删掉代码中的感叹号 ! 即可

但是,PowerShell脚本不能直接放到启动项中,可以使用批处理来调用它,批处理内容:

@echo off
powershell iex .\netTest.ps1

将两个文件放在同一个文件夹中,如图:

在 调用.bat 上点击右键,然后选择“创建快捷方式”,将创建出来的快捷方式放入“启动”文件夹即可实现开机自动检测。快速打开启动文件夹的方法:

按下Win+R键,输入以下代码后确定:

shell:startup

如图: 

 

相关推荐

  1. Windows系统网络配置命令详细指南

    2023-12-06 12:20:06       20 阅读
  2. 网络命令大全windows linux

    2023-12-06 12:20:06       29 阅读
  3. windows网络信息相关命令

    2023-12-06 12:20:06       25 阅读
  4. Linux anacron命令 检测长期不执行的定时任务

    2023-12-06 12:20:06       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-06 12:20:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-06 12:20:06       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-06 12:20:06       82 阅读
  4. Python语言-面向对象

    2023-12-06 12:20:06       91 阅读

热门阅读

  1. Linux 环境部署RabbitMQ

    2023-12-06 12:20:06       63 阅读
  2. Redux,react-redux,dva,RTK

    2023-12-06 12:20:06       60 阅读
  3. 【蓝桥杯】马的遍历

    2023-12-06 12:20:06       29 阅读
  4. Spring Boot项目Service类单元测试自动生成

    2023-12-06 12:20:06       49 阅读
  5. 网络编程HTTP协议进化史

    2023-12-06 12:20:06       63 阅读
  6. 计算机设计大赛 选题推荐

    2023-12-06 12:20:06       68 阅读
  7. 【Rust】结构体与枚举

    2023-12-06 12:20:06       43 阅读