[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 4# xuxianking

它这个代码的问题,出在,
  1. for /f "tokens=2 delims=[]" %%a in ('ping -n 1 %URL% ^| findstr "%URL%"') do
复制代码
中的 findstr "%URL%" 这里。因为
ping -n 1 bbs.csdn.net
正在 Ping bbs.csdn.net [47.95.50.136] 具有 32 字节的数据:

ping -n 1 www.baidu.com
正在 Ping www.a.shifen.com [14.215.177.38] 具有 32 字节的数据:
看到两个Ping后返回的域名区别没有,所以换了域名,如果Ping返回的不是跟原域名,一模一样,就出错了。
所以直接修改一下,findstr 后面的,查找变量就好了。

我也发现这个问题了,修改了一下,就可以了。
  1. @echo off
  2. echo.
  3. set /p URL=请输入需要监控的完整域名FQDN:
  4. del IP.txt
  5. del URL_IP.log
  6. set "FileIP=IP.txt"
  7. set "FileLog=URL_IP.log"
  8. if not exist "%FileIP%" (
  9.     >"%FileIP%" echo 0.0.0.0
  10. )
  11. if not exist "%FileLog%" (
  12.     >"%FileLog%" type nul
  13. )
  14. :Monitor
  15. for /f "tokens=2 delims=[]" %%a in ('ping -n 1 %URL% ^| findstr/i [') do (
  16.     set IP_Current=%%a
  17. )
  18. set /p IP_Previous=<"%FileIP%"
  19. echo %IP_Previous% -- %IP_Current%
  20. if "%IP_Previous%" neq "%IP_Current%" (
  21.     >"%FileIP%" echo %IP_Current%
  22.     >>"%FileLog%" echo [%date% %time%] %IP_Current%
  23. )
  24. timeout /nobreak /t 3 >nul
  25. goto :Monitor
复制代码

TOP

返回列表