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

[网络连接] 【已解决】批处理ping多个IP地址为何跳转出错?

本帖最后由 1275 于 2013-5-5 20:38 编辑

目的是实现在同时Ping通172.19.1.254和192.168.10.1这两个IP地址时才执行后面的goto语句;但是我测试了下下面的命令中即使第一个IP ping不同也会执行后面的goto;不知道错误在哪儿了请帮忙指正,谢谢!
  1. ping /n 1 /w 1 172.19.1.254 >nul | find /i "来自" && ping /n 1 /w 1 192.168.10.1 >nul | find /i "来自" && goto :wangzhi
复制代码
注:因为考虑到ping的结果只有发现“来自”或者“reply”时才为成功Ping通;但是失败却有多种错误,比如“超时”,“目标不可达”等;所以才用上面的方法。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 1275 于 2013-5-2 16:19 编辑

@echo off
tasklist|find /i "qq.exe" >nul
if "%errorlevel%"=="0" goto open
exit
pen
ping 127.1 -n 6 >nul
echo: 正在开启
@echo off
for /f "skip=4 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v "sLanguage"') do if not "%%a" == "CHS" goto :yingwen

:zhongwen
rem ping /n 1 /w 1 172.19.1.254 >nul | find /i "来自" &&
ping /n 1 /w 1 192.168.10.1 >nul | find /i "来自" && goto :wangzhi

:yingwen
rem ping /n 1 /w 1 172.19.1.254 >nul | find /i "Reply" &&
ping /n 1 /w 1 192.168.10.1 >nul | find /i "Reply" && goto :wangzhi

:wangzhi
start /max iexplore http://www.baidu.com
exit

这是完整代码
如果把rem ping /n 1 /w 1 172.19.1.254 >nul | find /i "Reply" && 中的rem去除,就会报错

TOP

xxpinqz 发表于 2013-5-2 16:21


如果多于两个IP地址的话,比如三个、四个也可以这样写么?

TOP

回复 6# xxpinqz
  1. @echo off
  2. tasklist|find /i "qq.exe" >nul
  3. if "%errorlevel%"=="0" goto open
  4. exit
  5. :open
  6. ping 127.1 -n 6 >nul
  7. echo: 正在开启
  8. @echo off
  9. for /f "skip=4 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v "sLanguage"') do if "%%a" == "CHS" goto :zhongwen
  10. :zhongwen
  11. ping /n 1 /w 1 172.19.1.254|find /i "ttl=">nul&&(ping /n 1 /w 1 192.168.10.1|find /i "ttl=">nul&&goto :wangzhi)
  12. :wangzhi
  13. start /max iexplore http://www.baidu.com
  14. exit
复制代码
我试了下还是不行 本身我现在172.19.1.254是Ping不通的 但是192.168.10.1可以Ping通  两个有一个不通就不能执行打开网址的操作
你再帮我看下吧 多谢

TOP

回复 7# Batcher
我试了下这样可以成功IE不会开启 但是我把172.19.1.254换成172.19.14.1的IP也就是两个IP都能Ping通时,IE是起不来的不知道为什么代码如下:
  1. @echo off
  2. tasklist | find /i "qq.exe" >nul && goto open
  3. goto :eof
  4. :open
  5. ping 127.1 -n 6 >nul
  6. echo: 正在开启
  7. for /f "skip=4 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v "sLanguage"') do if not "%%a" == "CHS" goto :yingwen
  8. :zhongwen
  9. ping /n 1 /w 1 172.19.14.1 >nul | find /i "来自" && ping /n 1 /w 1 192.168.10.1 >nul | find /i "来自" && goto :wangzhi
  10. goto :eof
  11. :yingwen
  12. ping /n 1 /w 1 172.19.14.1 >nul | find /i "Reply" && ping /n 1 /w 1 192.168.10.1 >nul | find /i "Reply" && goto :wangzhi
  13. goto :eof
  14. :wangzhi
  15. start /max iexplore http://www.baidu.com
复制代码

TOP

回复 11# Batcher
  1. 直接结果如下:
  2. F:\Self\Administrator\桌面>tasklist   | find /i "qq.exe"    && goto open
  3. QQ.exe                        4024 Console                    1     85,004 K
  4. F:\Self\Administrator\桌面>ping 127.1 -n 6
  5. 正在 Ping 127.0.0.1 具有 32 字节的数据:
  6. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  7. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  8. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  9. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  10. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  11. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  12. 127.0.0.1 的 Ping 统计信息:
  13.     数据包: 已发送 = 6,已接收 = 6,丢失 = 0 (0% 丢失),
  14. 往返行程的估计时间(以毫秒为单位):
  15.     最短 = 0ms,最长 = 0ms,平均 = 0ms
  16. F:\Self\Administrator\桌面>echo: 正在开启
  17. 正在开启
  18. F:\Self\Administrator\桌面>for /F "skip=4 tokens=3" %a in ('reg query "HKCU\Cont
  19. rol Panel\International" /v "sLanguage"') do if not "%a" == "CHS" goto :yingwen
  20. F:\Self\Administrator\桌面>ping /n 1 /w 1 172.19.14.1    | find /i "来自"   && p
  21. ing /n 1 /w 1 192.168.10.1   | find /i "来自"   && goto :wangzhi
  22. F:\Self\Administrator\桌面>pause
  23. 请按任意键继续. . .
复制代码
执行完后自动退出,为了保存结果我在
ping /n 1 /w 1 172.19.14.1  | find /i "来自" && ping /n 1 /w 1 192.168.10.1 | find /i "来自" && goto :wangzhi
pause
加了个pause的暂停

TOP

回复 9# xxpinqz
把172.19.1.254换成172.19.14.1,两个IP都能Ping通时,也是不执行打开IE的操作;你那边测试可以成功么?

TOP

本帖最后由 1275 于 2013-5-2 17:19 编辑

回复 15# Batcher
执行结果如下:
  1. Microsoft Windows [版本 6.1.7601]
  2. 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
  3. C:\Users\Administrator>c:\test.bat
  4. C:\Users\Administrator>tasklist   | find /i "qq.exe"    && goto open
  5. QQ.exe                        4024 Console                    1     59,568 K
  6. C:\Users\Administrator>ping 127.1 -n 6
  7. 正在 Ping 127.0.0.1 具有 32 字节的数据:
  8. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  9. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  10. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  11. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  12. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  13. 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
  14. 127.0.0.1 的 Ping 统计信息:
  15.     数据包: 已发送 = 6,已接收 = 6,丢失 = 0 (0% 丢失),
  16. 往返行程的估计时间(以毫秒为单位):
  17.     最短 = 0ms,最长 = 0ms,平均 = 0ms
  18. C:\Users\Administrator>echo: 正在开启
  19. 正在开启
  20. C:\Users\Administrator>for /F "skip=4 tokens=3" %a in ('reg query "HKCU\Control
  21. Panel\International" /v "sLanguage"') do if not "%a" == "CHS" goto :yingwen
  22. C:\Users\Administrator>ping /n 1 /w 1 172.19.14.1
  23. 正在 Ping 172.19.14.1 具有 32 字节的数据:
  24. 请求超时。
  25. 172.19.14.1 的 Ping 统计信息:
  26.     数据包: 已发送 = 1,已接收 = 0,丢失 = 1 (100% 丢失),
  27. C:\Users\Administrator>ping /n 1 /w 1 192.168.10.1
  28. 正在 Ping 192.168.10.1 具有 32 字节的数据:
  29. 来自 192.168.10.1 的回复: 字节=32 时间<1ms TTL=64
  30. 192.168.10.1 的 Ping 统计信息:
  31.     数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
  32. 往返行程的估计时间(以毫秒为单位):
  33.     最短 = 0ms,最长 = 0ms,平均 = 0ms
  34. C:\Users\Administrator>ping /n 1 /w 1 172.19.14.1   | find /i "来自"   && ping /
  35. n 1 /w 1 192.168.10.1   | find /i "来自"   && goto :wangzhi
  36. C:\Users\Administrator>goto :eof
  37. C:\Users\Administrator>
复制代码
单独Ping Ip是通的
  1. Microsoft Windows [版本 6.1.7601]
  2. 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
  3. C:\Users\Administrator>ping 172.19.14.1
  4. 正在 Ping 172.19.14.1 具有 32 字节的数据:
  5. 来自 172.19.14.1 的回复: 字节=32 时间=63ms TTL=255
  6. 来自 172.19.14.1 的回复: 字节=32 时间=525ms TTL=255
  7. 来自 172.19.14.1 的回复: 字节=32 时间=475ms TTL=255
  8. 来自 172.19.14.1 的回复: 字节=32 时间=4ms TTL=255
  9. 172.19.14.1 的 Ping 统计信息:
  10.     数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
  11. 往返行程的估计时间(以毫秒为单位):
  12.     最短 = 4ms,最长 = 525ms,平均 = 266ms
  13. C:\Users\Administrator>
复制代码

TOP

回复 17# Batcher

给力啊 这个参数去掉就完全可以了 难道是因为 w 1的等待时间太短了?

TOP

返回列表