批处理 ERRORLEVEL在for循环体中的求教?批处理文件的代码如下:......我的目的是通过判断ping...
目的是通过判断ping命令的返回ERRORLEVEL值来进行下面的if处理,但是,加在for循环内部后,ERRORLEVE的值始终为0,无论ping是否失败都一样,求教,...
目的是通过判断ping命令的返回ERRORLEVEL值来进行下面的if处理,但是,加在for循环内部后,ERRORLEVE的值始终为0,无论ping是否失败都一样,求教,如何修改代码:
for /l %%a in (2,1,254) do (
ping 192.168.0.%%a -n 2
if %ERRORLEVEL% == 0 (
echo IP:192.168.0.%%a已经成功联网 >> d:netreport.txt
start d:netreport.txt
exit
)
)
最终的目的,就是判断192.168.0.2到192.168.0.254中,哪一个IP联入了网络;找出后,写入到d:netreport文件,然后退出。(注:只可能有一个IP联入了网络) 展开
for /l %%a in (2,1,254) do (
ping 192.168.0.%%a -n 2
if %ERRORLEVEL% == 0 (
echo IP:192.168.0.%%a已经成功联网 >> d:netreport.txt
start d:netreport.txt
exit
)
)
最终的目的,就是判断192.168.0.2到192.168.0.254中,哪一个IP联入了网络;找出后,写入到d:netreport文件,然后退出。(注:只可能有一个IP联入了网络) 展开
1个回答
展开全部
要用到setlocal并且在循环中引用变量要用!!而不是%%
也就是把你的代码修改成以下
for /l %%a in (2,1,254) do (
ping 192.168.0.%%a -n 2
SETLOCAL ENABLEDELAYEDEXPANSION
if !ERRORLEVEL! == 0 (
echo IP:192.168.0.%%a已经成功联网 >> d:netreport.txt
start d:netreport.txt
exit
)
ENDLOCAL
)
也就是把你的代码修改成以下
for /l %%a in (2,1,254) do (
ping 192.168.0.%%a -n 2
SETLOCAL ENABLEDELAYEDEXPANSION
if !ERRORLEVEL! == 0 (
echo IP:192.168.0.%%a已经成功联网 >> d:netreport.txt
start d:netreport.txt
exit
)
ENDLOCAL
)
追问
这样,我试了一下,ERRORLEVEL变量的值依然为0,帮忙再修改一下,多谢了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询