c:\Test>time /t 11:01 PM c:\Test>echo %errorlevel% 0 c:\Test>dir /b a.txt a.txt c:\Test>echo %errorlevel% 0 |
c:\Test>time /t 11:02 PM c:\Test>echo %errorlevel% 0 c:\Test>dir /b a.log File Not Found c:\Test>echo %errorlevel% 1 |
c:\Test>time /t 11:03 PM c:\Test>echo %errorlevel% 0 c:\Test>attrib +r a.txt c:\Test>dir >a.txt Access is denied. c:\Test>echo %errorlevel% 0 |
c:\Test>time /t 11:04 PM c:\Test>echo %errorlevel% 0 c:\Test>attrib +r a.txt c:\Test>dir >a.txt || echo bbs.bathome.net Access is denied. bbs.bathome.net c:\Test>echo %errorlevel% 1 |
Cmd.exe runs the first command, and then runs the second command only if the first command did not complete successfully.
c:\Test>time /t 11:05 PM c:\Test>echo %errorlevel% 0 c:\Test>attrib +r a.txt c:\Test>dir >a.txt && echo bbs.bathome.net Access is denied. c:\Test>echo %errorlevel% 0 |
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
C:\Documents and Settings\Administrator>xx
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
C:\Documents and Settings\Administrator>echo %errorlevel%
9009
C:\Documents and Settings\Administrator>echo not set errorlevel
not set errorlevel
C:\Documents and Settings\Administrator>echo %errorlevel%
9009
C:\Documents and Settings\Administrator>echo not set errorlevel || echo not run
not set errorlevel
C:\Documents and Settings\Administrator>xx || echo run
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
run
C:\Documents and Settings\Administrator>
C:\Documents and Settings\Administrator>xx
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
C:\Documents and Settings\Administrator>echo %errorlevel%
9009
C:\Documents and Settings\Administrator>echo not set errorlevel || echo not run
not set errorlevel
C:\Documents and Settings\Administrator>echo %errorlevel%
9009
C:\Documents and Settings\Administrator>xx || echo run
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
run
C:\Documents and Settings\Administrator>echo %errorlevel%
1
C:\Documents and Settings\Administrator>xx
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
C:\Documents and Settings\Administrator>echo %errorlevel%
9009
C:\Documents and Settings\Administrator>xx || if errorlevel 1 if not errorlevel 2 echo errorlevel == 1
'xx' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
errorlevel == 1
复制代码
- C:\Users\Administrator>xx
- 'xx' 不是内部或外部命令,也不是可运行的程序
- 或批处理文件。
- C:\Users\Administrator>xx || echo %errorlevel%
- 'xx' 不是内部或外部命令,也不是可运行的程序
- 或批处理文件。
- 9009
- C:\Users\Administrator>echo %errorlevel%
- 1
- C:\Users\Administrator>xx
- 'xx' 不是内部或外部命令,也不是可运行的程序
- 或批处理文件。
- C:\Users\Administrator>echo %errorlevel%
- 9009
- C:\Users\Administrator>xx || echo %errorlevel%
- 'xx' 不是内部或外部命令,也不是可运行的程序
- 或批处理文件。
- 9009
- C:\Users\Administrator>echo %errorlevel%
- 1
可以改用变量延迟来解释变量:复制代码
- xx || echo %errorlevel%
- xx || echo %errorlevel%
- ::同样的两句,显示的 errorlevel 却不同,原因就在于这里的 errorlevel 都是隔夜饭,不是新鲜出炉的
复制代码
- xx || cmd /v /c echo !errorlevel!
- ::%errorlevel% 与 !errorlevel! 的区别在于,前者是以行(更确切地说应该是复合语句)为单位解释的,取到的是上一行运行结束后的变量,而后者是以一条命令为单位临时解释的,所以取到的是上一条命令的结果
欢迎光临 批处理之家 (http://www.bathome.net/) | Powered by Discuz! 7.2 |