![Board logo](images/default/logo.gif)
标题: [文本处理] 批处理errorlevel返回两个值怎么回事? [打印本页]
作者: city_85 时间: 2011-4-6 11:12 标题: 批处理errorlevel返回两个值怎么回事?
upload.bat脚本,第一个脚本不知道为什么.老是返回两个errorlevel值0和1,怎么回事啊- @echo off
- cd /d d:\web\"%1"
- attrib -s -h
- for %%a in (web.config,SPSideConfig.xml,KDOnlineLog.txt,images,iflyimages,TemplateFile) do attrib +s +h %%a
- del /q /f *.*
- for /d %%a in (*) do rd /s /q "%%a"
- for /f "delims=" %%a in ('dir /a /b') do attrib -h -s "%%a"
-
- xcopy /s/e/y/h/R d:\update\%2\%3\%4 d:\web\%1 >>d:\iislog.txt
- cacls.exe d:\web\"%1"\TemplateFile /e /t /g "network service":F >>d:\iislog.txt
- cacls.exe d:\web\"%1"\kdonlinelog.txt /e /t /g "network service":F >>d:\iislog.txt
-
- if errorlevel 0 echo 0
- if errorlevel 1 echo 1
复制代码
执行后upload.bat hk liang_04061025 uploadall online
目的可以达到,但是老是返回0和1,怎么回事呢?- @echo off
-
- rd /q /s d:\web\%1\ >d:\iislog.txt
- mkdir d:\web\%1 >d:\iislog.txt
-
- xcopy /s/e/y/h/R d:\update\%2\%3\%4 d:\web\%1 >>d:\iislog.txt
- copy /y d:\web_bak\%2\%1\kdonlinelog.txt d:\web\%1\ >>d:\iislog.txt
- copy /y d:\web_bak\%2\%1\web.config d:\web\%1\ >>d:\iislog.txt
- copy /y d:\web_bak\%2\%1\spsideconfig.xml d:\web\%1\ >>d:\iislog.txt
-
- cacls.exe d:\web\%1\TemplateFile /e /t /g "network service":F >>d:\iislog.txt
- cacls.exe d:\web\%1\kdonlinelog.txt /e /t /g "network service":F >>d:\iislog.txt
-
- if errorlevel 0 echo 0
- if errorlevel 1 echo 1
复制代码
目的可以达到,只返回0,这是我要的结果.
作者: TX_kakashi 时间: 2011-4-6 11:14
errorlevel只能判断一次,用if-else吧。
作者: hanyeguxing 时间: 2011-4-6 11:32
本帖最后由 hanyeguxing 于 2011-4-6 11:38 编辑
1,语法:if [not] errorlevel number command [else expression]
只有当由 Cmd.exe 运行的前一个程序返回大于或等于 number 的退出代码时,才能指定真条件。
你的错误认识发生在将此语法等同于 if %errorlevel% equ 0 和 if %errorlevel%==0 了
2,所以:
if errorlevel 0 echo 0
if errorlevel 1 echo 1
当返回为0时,第一个if成立第二个不成立所以只显示第一个;
当返回为1时,第一个if成立第二个也成立所以两个都显示。
3,如果只判断
存在大于0的返回:
if errorlevel 1 echo 有错误
if %errorlevel% gtr 0 echo 有错误
存在不为0的返回:
if %errorlevel% neq 0 echo 有错误
if not %errorlevel%==0 echo 有错误
存在大于或等于1的返回:
if errorlevel 1 echo 有错误
if %errorlevel% geq 1 echo 有错误
ps:并不是所有命令都有错误返回,也并不是所有错误返回都是大于0的。
作者: city_85 时间: 2011-4-6 11:38
还是有点模糊呢.那到底我两个脚本哪个对和错啊.但是事实两个脚本都是正确的啊
作者: hanyeguxing 时间: 2011-4-6 11:40
本帖最后由 hanyeguxing 于 2011-4-6 11:41 编辑
4# city_85
1,第一个脚本的错误:cd /d d:\web\"%1"
2,代码要使用[code]和[ /code]括起来,方便他们区分和复制
作者: city_85 时间: 2011-4-6 13:11
版主,你说我cd /d d:\web\"%1"这里错误吗?不会吧,怎么改啊,这个只是进入目录啊,我是初学者来的,谢谢提醒
作者: hanyeguxing 时间: 2011-4-6 13:20
6# city_85
cd /d d:\web\"%1"
你单独运行这个,看有错误提示没?
1,如果%1不带引号,则可以
cd /d "d:\web\%1"
或
cd /d d:\web\%1
2,如果%1带了引号,则
cd /d "d:\web\%~1"
或
cd /d d:\web\%~1
作者: wc726842270 时间: 2011-4-6 13:20
一般写代码时,errorlevel不都是从大到小么?(和版主的几乎是同一个意思)
作者: city_85 时间: 2011-4-6 14:14
明白了.谢谢
作者: city_85 时间: 2011-4-6 15:14
这里的版主个个都是大好人.![](images/smilies/default/lol.gif)
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |