Board logo

标题: [网络连接] 批处理怎样比较同一文件内的不同行? [打印本页]

作者: qdlfk    时间: 2011-1-7 10:13     标题: 批处理怎样比较同一文件内的不同行?

我自己写了个ADSL自动断网重新拨号的批处理,每次拨号后都会在ip.txt文件添加当前ip,现在想实现每次都自动比较IP.TXT文件中最后两行是不是一样,如果一样继续重新断网、拨号,直到不一样就调用IE(写这个的目的是为了重新拨号后获得一个不同的IP),不知如何能实现比较,或者有没有更好的办法判断重新拨号后的IP与之前的不重复,谢谢了
作者: tmplinshi    时间: 2011-1-7 10:33

  1. @echo off
  2. SetLocal EnableDelayedExpansion
  3. :拨号
  4. for /f "delims=" %%a in (ip.txt) do (
  5.     set IP.Last=!IP.Current!
  6.     set IP.Current=%%a
  7. )
  8. if "%IP.Current%"=="%IP.Last%" goto 拨号
  9. start "" iexplore http://bathome.net/thread-10683-1-1.html
  10. pause
复制代码

作者: qdlfk    时间: 2011-1-12 01:53     标题: 回复 2楼 的帖子

通过学习,自己写了个
  1. @echo off
  2. color 9f
  3. mode con coLs=40 Lines=12
  4. echo. >iplist.txt
  5. for /f "skip=1 tokens=2 delims=:" %%i in ('ipconfig/all^|findstr /c:"PPP adapter adsl" /c:"IP Address"') do (
  6. set i=%%i
  7. )
  8. set i=%i: =%
  9. echo %i% >>iplist.txt
  10. :a
  11. echo.
  12. echo.
  13. echo.
  14. echo           正在断开网络连接...
  15. rasdial "宽带连接名" /disconneCt >nul 2>nul
  16. cls
  17. echo.
  18. echo.
  19. echo.
  20. echo  网络已断开,30秒后将重新拨号,请稍后...
  21. color 47
  22. ping -n 30 127.1 >nul 2>nul
  23. CLS
  24. color 9f
  25. echo.
  26. echo.
  27. echo.
  28. ECHO         正在连接网络...
  29. echo.
  30. rem
  31. rasdial "宽带连接名" "账号" "密码" >nul
  32. for /f "skip=1 tokens=2 delims=:" %%a in ('ipconfig/all^|findstr /c:"PPP adapter adsl" /c:"IP Address"') do set a=%%a
  33. set a=%a: =%
  34. findstr /r "^%a%$" IPList.txt&&(goto a)||(>>IPList.txt echo %a%)
  35. start iexplore.exe "http://bbs.bathome.net"
  36. exit
复制代码
但运行后不管两次获得的IP地址是不是一样都写入了IPLIST.TXT,而没有做比较,不知问题出在哪


[ 本帖最后由 qdlfk 于 2011-1-12 02:03 编辑 ]
作者: Batcher    时间: 2011-1-12 10:15     标题: 回复 3楼 的帖子

把@echo off删掉,多加几个pause,在cmd里面跟踪一下执行过程。
作者: qdlfk    时间: 2011-1-12 16:23     标题: 回复 4楼 的帖子

已经解决
把开头的echo %i% >>iplist.txt
写成>>iplist.txt echo %i%就没问题了
不知道两种写法有什么本质的区别[/SIZE]




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