为何%errorlevel%的返回值不是预期的,if else跳转的也不对,烦各位指教了!

[复制链接]
查看11 | 回复2 | 2011-3-17 02:45:23 | 显示全部楼层 |阅读模式
我想写一个脚本自动检查库中文件的状态,但是发现%errorlevel%的返回值不是预期的,感觉逻辑也没有错,可能还是%errorlevel%的理解和用法不对,恳请各位帮忙指点一下,不胜感激!
for /f "tokens=1,2 delims= " %%i IN (filelist.txt) do (
Set ssDir=e:\usbll
Set ssUser=admin
Set ssPwd=1
SS status -U %%i%%j 1>>e:\test\statusinfo.txt
echo %%i %%j >e:\test\co.txt
if errorlevel 100 ( call e:\test\co\statusbl.bat ) else (
if errorlevel 1 (echo 1 >>e:\test\var.txt) else (echo 0 >>e:\test\var.txt) )
)
find /i "100" var.txt
if %errorlevel%==1 (
find /i "1" var.txt
if %errorlevel%==1( goto CHECKED_OUT ) else ( goto DONT_CHECKED_OUT )
) else ( goto BAD_FAILURE )
:CHECKED_OUT
echo No specified files are checked out: checking all out.
)
goto END
:DONT_CHECKED_OUT
echo One or more files is checked out: quitting without checking anything out. >>e:\test\statusinfo.txt
goto END
:BAD_FAILURE
echo Visual SourceSafe could not run successfully. >>e:\test\statusinfo.txt
:END
调用的statusbl.bat 的内容如下:
for /f %%i in (co.txt) do (
Set ssDir=e:\usbbl
Set ssUser=admin
Set ssPwd=1
ss cp $/
ss workfold $/ e:\test\
SS status -U %%i%%j 1>>e:\test\statusinfo.txt
if errorlevel 100 (echo 100 >>e:\test\var.txt) else (
if errorlevel 1 (echo 1 >>e:\test\var.txt) else (echo 0 >>e:\test\var.txt) )
SS status -U %%i%%j 2>>e:\test\statusinfo.txt
)
ps.var.txt里面的值只有100,1,0这3种数值的可能,这3个数是随机出现的。
find /i "100" var.txt
if %errorlevel%==1 (
find /i "1" var.txt
if %errorlevel%==1( goto CHECKED_OUT ) else ( goto DONT_CHECKED_OUT )
) else ( goto BAD_FAILURE )
这一段跳转的有问题,我想var.txt里面如果有100,就跳转到:BAD_FAILURE,然后结束,如果没有100,就再检查var.txt里面有没有1,如果有1就跳转到:DONT_CHECKED_OUT,如果没有1的话就跳转到:CHECKED_OUT。

回复

使用道具 举报

千问 | 2011-3-17 02:45:23 | 显示全部楼层
看看if的帮助就会知道将if %errorlevel%==1换成 if %errorlevel%eq 1 或者使用字符串比较 if "%errorlevel%"=="1"
回复

使用道具 举报

千问 | 2011-3-17 02:45:23 | 显示全部楼层
感觉errorlevel不是很稳定,可以用 set /pv=<var.txt 将文件第一行内容赋给变量,再判断就好了.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行