[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

请把完整代码贴出来看看

TOP

本帖最后由 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

  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)
复制代码

TOP

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


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

TOP

可以,你按那模式一个个写进去就行,你只要记住 () 优先于 | 优先于 &&
执行出错还因为你的>nul放错地方了

TOP

试试这个
  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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

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

本帖最后由 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)
复制代码

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

回复 10# 1275


把@echo off和所有的>nul全部删掉
代码保存为C:\test.bat
开始
运行
CMD
C:\test.bat
结果贴出来看看
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

你用版主的代码也可以,不过上边都说了>nul你放错位置了。。。。。。你放前面都屏蔽掉了&&后面等于ping出错才执行不是ping成功才执行.

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

回复 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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表