批处理中的find返回值%errorlevel%.

我和别人合用宽带.我想写个脚本,不停的ping别人的IP,别人没上我就全速下载,别人上我就杀迅雷进程.代码如下:FOR/L%%FIN(100,1,199)DOPING-n... 我和别人合用宽带. 我想写个脚本, 不停的ping别人的IP, 别人没上我就全速下载, 别人上我就杀迅雷进程. 代码如下:
FOR /L %%F IN (100,1,199) DO PING -n 1 192.168.1.%%F | find "TTL" >nul & if %ERRORLEVEL%==0 taskkill /im thunder.exe /f
问题是, find有没有找到TTL, %errorlevel%的返回值都是0.
我把它拆开:
PING -n 1 192.168.1.1 | find "TTL" >nul
echo %errorlevel%
ping得通, 0.
PING -n 1 192.168.1.250 | find "TTL" >nul
echo %errorlevel%
ping不通, 1.
还请不吝赐教, 谢谢.
对了, 我的软件环境为:
OS 名称: Microsoft Windows 7 旗舰版
OS 版本: 6.1.7600 暂缺 Build 7600
展开
 我来答
yx6070
推荐于2016-05-15 · TA获得超过1.5万个赞
知道大有可为答主
回答量:5827
采纳率:0%
帮助的人:0
展开全部
问题出在变量延迟上。
可以写成这样:
setlocal enabledelayedexpansion
FOR /L %%F IN (100,1,199) DO PING -n 1 192.168.1.%%F | find "TTL" >nul & if !ERRORLEVEL!==0 taskkill /im thunder.exe /f

更简便的方法是:
FOR /L %%F IN (100,1,199) DO PING -n 1 192.168.1.%%F | find "TTL" >nul&&taskkill /im thunder.exe /f

通常路由器同享上网,只会用到前面的IP,两台基本就用:192.168.1.100,192.168.1.101。
可以把199改到105,或者就ping 192.168.1.100或者192.168.1.101。
追问
变量延迟是什么意思, 能不能简单的解释一下, 再给一点资料.
setlocal enabledelayedexpansion
这个语句是什么意思.
麻烦了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式