[新手贴] 获取for里的命令返回码%errorlevel%
批处理吧
全部回复
仅看楼主
level 11
布智盗 楼主
如:
a.txt 内容:
c:\
z:\
a.bat 内容:
@echo off
for /f %%i in (a.txt) do (
dir /b %%i
echo %errorlevel% &pause)
上面这个判别不了dir命令是否成功的,不管有没有z:盘,%errorlevel% 都输出0,原因是整个for都当作了一行,%errorlevel%判别的是for上面一行即:@echo off这一行,那么怎么办?
我是这样改:
@echo off
for /f %%i in (a.txt) do (
call :aa %%i &pause
)
exit
:aa
dir /b %1
echo %errorlevel%
:eof
上面是我获取的方法,当然for内判断,用&;&&;|| 这些符号作为判断是最好的选择!
2017年05月19日 10点05分 1
level 6
!errorlevel! ok?
2017年05月20日 09点05分 3
又没用延迟变量,用什么感叹号?
2017年05月20日 09点05分
同样,通过 call标签, 可以把for 里的变量,不用启用延迟变量,一样相当于启用了延迟变量!
2017年05月20日 09点05分
level 11
布智盗 楼主
如:
a.txt 内容:
c:\
z:\
a.bat 启用延迟变量效果内容:
@echo off
for /f %%i in (a.txt) do (
call :aa %%i &pause
)
exit
:aa
set str=%1
echo %str%
pause
:eof
2017年05月20日 09点05分 4
level 12
@echo off
for /f %%i in (a.txt) do (
dir /b %%i >nul
call,echo %%errorlevel%%)
pause
2017年05月26日 08点05分 5
你这样会不会有局限性?如果我还要通过返回码进行判断语句呢?如: if ERRORLEVEL 0 goto :b
2017年05月26日 08点05分
@布智盗 可以忽略,你随意
2017年05月26日 09点05分
1