【问题标题】:Batch Files - Using ping to test network connectivity批处理文件 - 使用 ping 测试网络连接
【发布时间】:2011-09-15 11:55:34
【问题描述】:

使用批处理文件可以执行以下操作:

ping google.com

如果返回成功做 ECHO 你已经连接到互联网

else return ECHO 你没有连接到互联网

【问题讨论】:

  • 这个问题没有显示任何研究工作
  • 我对 windows cmd 行有点菜鸟。 errorlevel 必须用百分号括起来才能使这些解决方案起作用。

标签: windows file batch-file


【解决方案1】:

你可以使用下面的sn-p:

@echo off
Ping www.google.de -n 1 -w 1000
if errorlevel 1 echo Not connected

【讨论】:

    【解决方案2】:

    这是一个脚本,它会在每次互联网离线时重复检查,并将时间(从系统时钟)和“互联网离线”写入 C:\Internet.txt 的日志文件中。 不幸的是,日志文件中的最新行将出现在最后——我不知道如何让它出现在顶部;)

    顺便说一句: 我将等待时间 (-w) 设置为 20 秒,因为我使用的是 3G 加密狗(带 2G 互联网),所以 20 秒通常是确定互联网是否真的关闭或其他问题的唯一方法......随意将其更改为 5000 5s,或完全删除“-w 20000”以保留默认值。

    @echo off
    
    :START
    
    ping -n 4 4.2.2.2 -w 20000 >nul
    
    if %errorlevel% == 1 (
      echo Internet offline >> C:\Internet.txt
      Time /t >> C:\Internet.txt
    )
    
    Timeout /t 30
    @set errorlevel = 0
    
    GOTO START
    

    【讨论】:

    • 为什么在脚本末尾设置错误级别为0?
    • 我认为每次都必须重置它,否则它将永久为 1?
    【解决方案3】:

    这里有一个脚本可以帮助您开始:

    http://www.techimo.com/forum/networking-internet/73769-handy-batch-file-check-network-connectivity.html

    注意:如果您的系统不是英文的,您将不得不修改脚本中使用find 命令将Reply from 从ping 的输出中过滤为系统语言的相应字符串的行。

    【讨论】:

    • 从来没想过。但是,我不明白为什么它不会?
    • @jeb:谢谢,这就是把它放在这里的目的。我也曾想过在我的回答中写下“Google 是我们的朋友”。
    • @Chumillas:没关系。甚至问题都是用英语提出的。
    • @NAVEED 该解决方案应覆盖所有公众恕我直言。
    【解决方案4】:
    @echo off
    echo Checking connection
    ping -n 1 www.google.com >nul
    if errorlevel 1 (
      cls
      echo Failed
      pause>nul
      exit
    )
    
    cls
    echo Success!
    pause>nul
    exit
    

    【讨论】:

      【解决方案5】:

      根据@CShulz 的回答,这里有一个脚本,只有在没有连接时才会打印“未连接”,否则它将每 30 秒静默循环一次测试。首先 ping 测试连接并在出现问题时打印错误消息。第二次 ping 通过 ping 本地主机增加了 30 秒的等待时间。

      @echo off
      :loop
      ping www.google.com -n 1 -w 5000 > nul
      if errorlevel 1 echo Not connected
      ping -n 30 127.0.0.1 > nul
      goto loop
      

      【讨论】:

        【解决方案6】:
        @echo off
        :loop
        ping www.google.com -n 1 -w 5000 >NUL
        if errorlevel 1 echo Not connected
        goto Loop
        

        【讨论】:

          【解决方案7】:
          echo Testing Internet Connection of google.com
          @echo off
          :loop
          ping google.com -n 1 -w 5000 > nul
          if errorlevel 1 echo %date% - %time% Not connected >> pingtestlog.txt
          ping -n 30 127.0.0.1 > nul
          goto loop
          

          【讨论】:

          • 此版本会在您运行脚本的同一文件夹中创建一个日志文件,并将任何断开连接的日期和时间附加到日志文件中。我仍然遇到的唯一问题是添加日志文件会在断开连接时禁用屏幕上文本“未连接”的回显。但是,日志文件的存在会提醒您已断开连接。
          • 请添加一些解释。在 SO 中不鼓励仅代码答案
          【解决方案8】:

          我知道这是一个旧线程,但无论如何这是我的贡献。

          @echo off
          
          TITLE Network Connection Watchdog
          
          :: Use Windows "Task Scheduler".
          :: Set to run at "Startup" with a delay and interval of your choice.
          :: Remember to tick "Run with highest privileges".
          
          :: Last command will only be executed if all pings fail.
          
          set /a pc=0
          set /a total=0
          
          :: Your preferences
          set if="Wi-fi" &:: Find your interface name with [netsh interface show interface].
          set ip=192.168.0.1
          set /a pt=10 &:: Set amount of pings to be executed.
          
          :loop
          set /a pc+=1
          ping %ip% -n 1 -w 100 | find "TTL=" >NUL 2>&1
          for /f %%a in ('echo %errorlevel%') do set p%pc%=%%a
          
          set /a total+=p%pc%
          if not %pc%==%pt% goto loop
          
          if not %total%==%pt% (
          goto eof
          ) else (
          netsh interface set interface %if% disable
          ping localhost -n 5 >NUL 2>&1
          netsh interface set interface %if% enable
          )
          
          :eof
          exit
          

          【讨论】:

            【解决方案9】:

            这个基本脚本可以连续 ping google.com 并测试您的互联网连接。脚本将循环运行,直到您关闭窗口。

            @echo off
            :loop
            ping www.google.com -n 1 -w 5000 > null
                if not errorlevel 1 set msg=Your are connected with internet...
                if errorlevel 1 set msg=No Internet...
            cls
            color 0a
            echo %msg%
            goto loop
            

            【讨论】:

              猜你喜欢
              • 2016-01-09
              • 2016-12-11
              • 1970-01-01
              • 1970-01-01
              • 2013-05-04
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多