批处理高手进,关于ERRORLEVEL!!!

我想用批处理做一设定IP的东西,就是网络里可以上网的IP集合里有没有被用,如果没有,就把本机IP设定为这个IP。用的是下面的代码,ping确定使用和确定不使用的IP时发现... 我想用批处理做一设定IP的东西,就是网络里可以上网的IP集合里有没有被用,如果没有,就把本机IP设定为这个IP。用的是下面的代码,ping 确定使用和确定不使用的IP时发现ERRORLEVEL的值一直是0,可能这里返回的不是ping命令的ERRORLEVL,是怎么回事,要怎么样才能返回ping的ERRORLEVEL?

@echo off
for /f %%i in (netableip.txt) do (ping %%i -n 1 -w 100
echo %ERRORLEVEL%
if %ERRORLEVEL%==1 (echo setip %%i
echo setdns))
pause
可以根据ping返回值运行的批处理
@echo off
set /a var=0
set /a cout1=0
set /a cout2=0
if exist 离线主机列表.txt del 离线主机列表.txt
if exist 在线主机列表.txt del 在线主机列表.txt
:start
set /a var+=1
ping 192.168.1.%var% -n 1 -w 100
if %ERRORLEVEL%==1 (echo 192.168.1.%var%>>离线主机列表.txt
set /a cout1+=1
echo %cout1%)
if %ERRORLEVEL%==0 (echo 192.168.1.%var%>>在线主机列表.txt
set /a cout2+=1
echo %cout2%)
if %var% leq 255 GOTO start
echo 在线主机数量为:%cout2%
echo 离线主机数量为:%cout1%
pause
展开
 我来答
我手我口
2011-12-01 · TA获得超过807个赞
知道小有建树答主
回答量:565
采纳率:61%
帮助的人:325万
展开全部
ping 能返回ERRORLEVL吗?
ping 的输出是一句话啊,通是一句话,不通又是另一句话。
一般是通过这句话查找特定的字符串,判断是通还是一通。

比如你那个,把echo %ERRORLEVEL%换成|find /i "TTL"
就是说ping之后,再查找一下是否包含TTL字符串,有就是通,没有就是不通。
追问
ping 是有返回值的。我补充里把可以用返回值的代码加上了。你这种方法应该也行。先谢谢你!
康科达
2023-08-22 广告
北京康科达科技有限公司是一家专业从事放射治疗配套设备及耗材生产、经营的科技企业。客户面向全国的疾控中心和放疗科医院。主营电离室、放疗剂量仪、放疗自动扫描水箱、调强验证系统、放疗质控设备、激光定位系统、放疗定位产品、放疗定位膜、放疗模室产品、... 点击进入详情页
本回答由康科达提供
sudoku52
2011-12-01 · TA获得超过7万个赞
知道大有可为答主
回答量:1.2万
采纳率:82%
帮助的人:4909万
展开全部
不需ERRORLEVEL,用管道命令即可。
@echo off
for /f %%i in (netableip.txt) do ping %%i -n 1 -w 100&&echo %%i used! ||echo setip %%i
追问
问一下您,管道命令左右可以用括号来运行多条语句吗?比如
for /f %%i in (netableip.txt) do ping %%i -n 1 -w 100&&echo %%i used! ||(echo setip %%i echo setdns)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式