标题: [网络连接] 【已解决】批处理ping多个IP地址为何跳转出错? [打印本页]
作者: 1275 时间: 2013-5-2 16:02 标题: 【已解决】批处理ping多个IP地址为何跳转出错?
本帖最后由 1275 于 2013-5-5 20:38 编辑
目的是实现在同时Ping通172.19.1.254和192.168.10.1这两个IP地址时才执行后面的goto语句;但是我测试了下下面的命令中即使第一个IP ping不同也会执行后面的goto;不知道错误在哪儿了请帮忙指正,谢谢!- 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通;但是失败却有多种错误,比如“超时”,“目标不可达”等;所以才用上面的方法。
作者: BAT-VBS 时间: 2013-5-2 16:15
请把完整代码贴出来看看
作者: 1275 时间: 2013-5-2 16:17
本帖最后由 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去除,就会报错
作者: xxpinqz 时间: 2013-5-2 16:21
- 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)
复制代码
作者: 1275 时间: 2013-5-2 16:28
xxpinqz 发表于 2013-5-2 16:21
如果多于两个IP地址的话,比如三个、四个也可以这样写么?
作者: xxpinqz 时间: 2013-5-2 16:32
可以,你按那模式一个个写进去就行,你只要记住 () 优先于 | 优先于 &&
执行出错还因为你的>nul放错地方了
作者: Batcher 时间: 2013-5-2 16:36
试试这个- @echo off
- tasklist | find /i "qq.exe" >nul && goto open
- goto :eof
-
- :open
- ping 127.1 -n 6 >nul
- echo: 正在开启
- for /f "skip=4 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v "sLanguage"') do if not "%%a" == "CHS" goto :yingwen
-
- :zhongwen
- 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
- goto :eof
-
- :yingwen
- 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
- goto :eof
-
- :wangzhi
- start /max iexplore http://www.baidu.com
复制代码
作者: 1275 时间: 2013-5-2 16:38
回复 6# xxpinqz - @echo off
- tasklist|find /i "qq.exe" >nul
- if "%errorlevel%"=="0" goto open
- exit
- :open
- 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 "%%a" == "CHS" goto :zhongwen
-
- :zhongwen
- 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)
-
- :wangzhi
- start /max iexplore http://www.baidu.com
- exit
复制代码
我试了下还是不行 本身我现在172.19.1.254是Ping不通的 但是192.168.10.1可以Ping通 两个有一个不通就不能执行打开网址的操作
你再帮我看下吧 多谢
作者: xxpinqz 时间: 2013-5-2 16:45
本帖最后由 xxpinqz 于 2013-5-2 16:52 编辑
回复 1275
那个本身就是判断两个都通才执行goto,不通不执行- @echo off
- ::两个IP都PING通才打开IE
- tasklist|find /i "qq.exe" >nul&&goto open
- exit /b
- :open
- ping 127.1 -n 6 >nul
- 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)
复制代码
作者: 1275 时间: 2013-5-2 16:47
回复 7# Batcher
我试了下这样可以成功IE不会开启 但是我把172.19.1.254换成172.19.14.1的IP也就是两个IP都能Ping通时,IE是起不来的不知道为什么代码如下:- @echo off
- tasklist | find /i "qq.exe" >nul && goto open
- goto :eof
-
- :open
- ping 127.1 -n 6 >nul
- echo: 正在开启
- for /f "skip=4 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v "sLanguage"') do if not "%%a" == "CHS" goto :yingwen
-
- :zhongwen
- 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
- goto :eof
-
- :yingwen
- 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
- goto :eof
-
- :wangzhi
- start /max iexplore http://www.baidu.com
复制代码
作者: Batcher 时间: 2013-5-2 16:50
回复 10# 1275
把@echo off和所有的>nul全部删掉
代码保存为C:\test.bat
开始
运行
CMD
C:\test.bat
结果贴出来看看
作者: xxpinqz 时间: 2013-5-2 16:55
你用版主的代码也可以,不过上边都说了>nul你放错位置了。。。。。。你放前面都屏蔽掉了&&后面等于ping出错才执行不是ping成功才执行.
作者: 1275 时间: 2013-5-2 16:59
回复 11# Batcher - 直接结果如下:
- F:\Self\Administrator\桌面>tasklist | find /i "qq.exe" && goto open
- QQ.exe 4024 Console 1 85,004 K
-
- F:\Self\Administrator\桌面>ping 127.1 -n 6
-
- 正在 Ping 127.0.0.1 具有 32 字节的数据:
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
-
- 127.0.0.1 的 Ping 统计信息:
- 数据包: 已发送 = 6,已接收 = 6,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 0ms,平均 = 0ms
-
- F:\Self\Administrator\桌面>echo: 正在开启
- 正在开启
-
- F:\Self\Administrator\桌面>for /F "skip=4 tokens=3" %a in ('reg query "HKCU\Cont
- rol Panel\International" /v "sLanguage"') do if not "%a" == "CHS" goto :yingwen
-
-
- F:\Self\Administrator\桌面>ping /n 1 /w 1 172.19.14.1 | find /i "来自" && p
- ing /n 1 /w 1 192.168.10.1 | find /i "来自" && goto :wangzhi
-
- F:\Self\Administrator\桌面>pause
- 请按任意键继续. . .
复制代码
执行完后自动退出,为了保存结果我在
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的暂停
作者: 1275 时间: 2013-5-2 17:05
回复 9# xxpinqz
把172.19.1.254换成172.19.14.1,两个IP都能Ping通时,也是不执行打开IE的操作;你那边测试可以成功么?
作者: Batcher 时间: 2013-5-2 17:12
回复 13# 1275
试试这个代码
不要双击bat文件,严格按照11楼的方法操作。- tasklist | find /i "qq.exe" && goto open
- goto :eof
-
- :open
- ping 127.1 -n 6
- echo: 正在开启
- for /f "skip=4 tokens=3" %%a in ('reg query "HKCU\Control Panel\International" /v "sLanguage"') do if not "%%a" == "CHS" goto :yingwen
-
- :zhongwen
- ping /n 1 /w 1 172.19.14.1
- ping /n 1 /w 1 192.168.10.1
- ping /n 1 /w 1 172.19.14.1 | find /i "来自" && ping /n 1 /w 1 192.168.10.1 | find /i "来自" && goto :wangzhi
- goto :eof
-
- :yingwen
- ping /n 1 /w 1 172.19.14.1
- ping /n 1 /w 1 192.168.10.1
- 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
- goto :eof
-
- :wangzhi
- start /max iexplore http://www.baidu.com
复制代码
作者: 1275 时间: 2013-5-2 17:16
本帖最后由 1275 于 2013-5-2 17:19 编辑
回复 15# Batcher
执行结果如下:- Microsoft Windows [版本 6.1.7601]
- 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
-
- C:\Users\Administrator>c:\test.bat
-
- C:\Users\Administrator>tasklist | find /i "qq.exe" && goto open
- QQ.exe 4024 Console 1 59,568 K
-
- C:\Users\Administrator>ping 127.1 -n 6
-
- 正在 Ping 127.0.0.1 具有 32 字节的数据:
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
- 来自 127.0.0.1 的回复: 字节=32 时间<1ms TTL=64
-
- 127.0.0.1 的 Ping 统计信息:
- 数据包: 已发送 = 6,已接收 = 6,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 0ms,平均 = 0ms
-
- C:\Users\Administrator>echo: 正在开启
- 正在开启
-
- C:\Users\Administrator>for /F "skip=4 tokens=3" %a in ('reg query "HKCU\Control
- Panel\International" /v "sLanguage"') do if not "%a" == "CHS" goto :yingwen
-
- C:\Users\Administrator>ping /n 1 /w 1 172.19.14.1
-
- 正在 Ping 172.19.14.1 具有 32 字节的数据:
- 请求超时。
-
- 172.19.14.1 的 Ping 统计信息:
- 数据包: 已发送 = 1,已接收 = 0,丢失 = 1 (100% 丢失),
-
- C:\Users\Administrator>ping /n 1 /w 1 192.168.10.1
-
- 正在 Ping 192.168.10.1 具有 32 字节的数据:
- 来自 192.168.10.1 的回复: 字节=32 时间<1ms TTL=64
-
- 192.168.10.1 的 Ping 统计信息:
- 数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 0ms,平均 = 0ms
-
- C:\Users\Administrator>ping /n 1 /w 1 172.19.14.1 | find /i "来自" && ping /
- n 1 /w 1 192.168.10.1 | find /i "来自" && goto :wangzhi
-
- C:\Users\Administrator>goto :eof
-
- C:\Users\Administrator>
复制代码
单独Ping Ip是通的- Microsoft Windows [版本 6.1.7601]
- 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
-
- C:\Users\Administrator>ping 172.19.14.1
-
- 正在 Ping 172.19.14.1 具有 32 字节的数据:
- 来自 172.19.14.1 的回复: 字节=32 时间=63ms TTL=255
- 来自 172.19.14.1 的回复: 字节=32 时间=525ms TTL=255
- 来自 172.19.14.1 的回复: 字节=32 时间=475ms TTL=255
- 来自 172.19.14.1 的回复: 字节=32 时间=4ms TTL=255
-
- 172.19.14.1 的 Ping 统计信息:
- 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 4ms,最长 = 525ms,平均 = 266ms
-
- C:\Users\Administrator>
复制代码
作者: Batcher 时间: 2013-5-2 17:28
回复 16# 1275
把/w 1删掉再试试
作者: 1275 时间: 2013-5-2 17:36
回复 17# Batcher
给力啊 这个参数去掉就完全可以了 难道是因为 w 1的等待时间太短了?
作者: Batcher 时间: 2013-5-2 18:17
回复 18# 1275
是的
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |