批处理中的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 展开
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 展开
1个回答
展开全部
问题出在变量延迟上。
可以写成这样:
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
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
这个语句是什么意思.
麻烦了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询