Board logo

标题: [其他] 批处理怎样记录IP断开的时间? [打印本页]

作者: aabbcc112233    时间: 2020-1-5 17:01     标题: 批处理怎样记录IP断开的时间?

请教各位大神,
我想实现的目的是。记录脚本开始的时间,一直去ping一个IP,如果三次不通就判断为IP掉线,记录掉线的时间。
写了下面几行批处理。
运行的时候不停的执行  echo start %date%  %time%>>log.txt  不能往下执行。
不理解为什么是这样,麻烦大神帮助一下
  1. @echo off
  2. echo start %date%  %time%>>log.txt
  3. set ip=192.168.1.1
  4. :start
  5. ping %ip% -w 50 -n 1 >nul
  6. IF %ERRORLEVEL% EQU 1 goto error1
  7. IF %ERRORLEVEL% EQU 0 goto start
  8. :error1
  9. ping %ip% -w 50 -n 1 >nul
  10. IF %ERRORLEVEL% EQU 1 goto error2
  11. IF %ERRORLEVEL% EQU 0 goto start
  12. :error2
  13. ping %ip% -w 50 -n 1 >nul
  14. IF %ERRORLEVEL% EQU 1 goto end
  15. IF %ERRORLEVEL% EQU 0 goto start
  16. :end
  17. echo end %date%  %time%>>log.txt
  18. exit
复制代码

作者: Batcher    时间: 2020-1-5 20:48

回复 1# aabbcc112233


第一行代码删掉
脚本命名为 test.bat
执行以下看看到哪一步出错了
作者: /zhqsystem/zhq    时间: 2020-1-6 02:17

本帖最后由 /zhqsystem/zhq 于 2020-1-6 02:22 编辑
  1. set n=0
  2. :m
  3. call:Network_Check
  4. if defined $Network_Check (set "n=0")else (set/a "n+=1")
  5. if %n% equ 0 (
  6.   echo,网络正常: %Date% %Time%
  7. )else if %n% geq 3 (set "n=3"
  8.   echo,网络异常: %Date% %Time%
  9. )else (
  10.   echo,网络丢包: %Date% %Time%
  11. )
  12. goto:m
  13. :Network_Check
  14. rem:网络检查
  15. set "$Network_Check="&&for /f "delims=" %%p in ('ping.exe /n 2 "192.168.1.1"')do for %%q in (%%p)do if /i "%%q"=="ttl" set "$Network_Check=%%~p"
  16. goto:eof
复制代码

作者: aabbcc112233    时间: 2020-1-6 22:55

回复 2# Batcher

感谢大佬回复

卡在ping这里了,我测试了一下直接执行命令是没有问题的
作者: aabbcc112233    时间: 2020-1-6 22:58

回复 3# /zhqsystem/zhq


    感谢回复  我的要求是知道什么时候网络断开的就行了,不需要知道这么详细的信息。
    我是测试树莓派使用充电宝供电的续航时间,没有想到其他的好办法,只能用网络是否在线来判断
作者: WHY    时间: 2020-1-6 23:52

批处理文件名被命名为 ping.bat 会出现这种情况。
作者: aabbcc112233    时间: 2020-1-8 22:51

回复 6# WHY


    我靠居然真的改个名字就好了,还有这种坑,感谢指点




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2