找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 79390|回复: 18

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

[复制链接]
发表于 2013-5-2 16:02:01 | 显示全部楼层 |阅读模式
本帖最后由 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通;但是失败却有多种错误,比如“超时”,“目标不可达”等;所以才用上面的方法。

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2013-5-2 16:15:30 | 显示全部楼层
请把完整代码贴出来看看
 楼主| 发表于 2013-5-2 16:17:42 | 显示全部楼层
本帖最后由 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去除,就会报错
发表于 2013-5-2 16:21:56 | 显示全部楼层

  1. 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)
复制代码
 楼主| 发表于 2013-5-2 16:28:12 | 显示全部楼层
xxpinqz 发表于 2013-5-2 16:21


如果多于两个IP地址的话,比如三个、四个也可以这样写么?
发表于 2013-5-2 16:32:31 | 显示全部楼层
可以,你按那模式一个个写进去就行,你只要记住 () 优先于 | 优先于 &&
执行出错还因为你的>nul放错地方了
发表于 2013-5-2 16:36:59 | 显示全部楼层
试试这个
  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.1.254 >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.1.254 >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
复制代码
 楼主| 发表于 2013-5-2 16:38:01 | 显示全部楼层
回复 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通  两个有一个不通就不能执行打开网址的操作
你再帮我看下吧 多谢
发表于 2013-5-2 16:45:08 | 显示全部楼层
本帖最后由 xxpinqz 于 2013-5-2 16:52 编辑

回复 1275
那个本身就是判断两个都通才执行goto,不通不执行

  1. @echo off
  2. ::两个IP都PING通才打开IE
  3. tasklist|find /i "qq.exe" >nul&&goto open
  4. exit /b
  5. :open
  6. ping 127.1 -n 6 >nul
  7. 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&&start /max iexplore http://www.baidu.com)
复制代码
 楼主| 发表于 2013-5-2 16:47:34 | 显示全部楼层
回复 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
复制代码
发表于 2013-5-2 16:50:57 | 显示全部楼层
回复 10# 1275


把@echo off和所有的>nul全部删掉
代码保存为C:\test.bat
开始
运行
CMD
C:\test.bat
结果贴出来看看
发表于 2013-5-2 16:55:32 | 显示全部楼层
你用版主的代码也可以,不过上边都说了>nul你放错位置了。。。。。。你放前面都屏蔽掉了&&后面等于ping出错才执行不是ping成功才执行.
 楼主| 发表于 2013-5-2 16:59:26 | 显示全部楼层
回复 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的暂停
 楼主| 发表于 2013-5-2 17:05:04 | 显示全部楼层
回复 9# xxpinqz
把172.19.1.254换成172.19.14.1,两个IP都能Ping通时,也是不执行打开IE的操作;你那边测试可以成功么?
发表于 2013-5-2 17:12:55 | 显示全部楼层
回复 13# 1275


试试这个代码
不要双击bat文件,严格按照11楼的方法操作。
  1. tasklist | find /i "qq.exe"  && goto open
  2. goto :eof

  3. :open
  4. ping 127.1 -n 6
  5. echo: 正在开启
  6. for /f "skip=4 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v "sLanguage"') do if not "%%a" == "CHS" goto :yingwen

  7. :zhongwen
  8. ping /n 1 /w 1 172.19.14.1
  9. ping /n 1 /w 1 192.168.10.1
  10. ping /n 1 /w 1 172.19.14.1 | find /i "来自" && ping /n 1 /w 1 192.168.10.1 | find /i "来自" && goto :wangzhi
  11. goto :eof

  12. :yingwen
  13. ping /n 1 /w 1 172.19.14.1
  14. ping /n 1 /w 1 192.168.10.1
  15. ping /n 1 /w 1 172.19.14.1 | find /i "Reply" && ping /n 1 /w 1 192.168.10.1 | find /i "Reply" && goto :wangzhi
  16. goto :eof

  17. :wangzhi
  18. start /max iexplore http://www.baidu.com
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 06:19 , Processed in 0.023717 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表