假设我有一个批处理文件,我在其中调用VBScript(返回ERRORLEVEL),如:
@echo off
echo Passing the control to VBSCript.
Cscript test.vbs
if %ERRORLEVEL% EQU 0 (
echo done here!!!!
EXIT /B 0
)
if %ERRORLEVEL% EQU 1
echo EROOR!!!!!!!
EXIT /B 1
)
和test.vbs就像:
Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
strComputer = "."
strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
strEntry1a = "DisplayName"
strEntry1b = "QuietDisplayName"
strEntry1c = "DisplayVersion"
.......................................
..........some code here...............
.......................................
IF i=0 THEN
WScript.Echo "Congratulations!! Everything is fine......
WScript.Quit 0
ELSE
WScript.Echo "Sorry Mate.. Things out here look bad....
WScript.Quit 1
END IF
我的问题是执行这个批处理文件后........我无法在我的批处理脚本中捕获由我的VBScript生成的%ERRORLEVEL%(PS:test.vbs在运行时执行正常单独)。而且,我得到了一个奇怪的输出:
Passing the control to VBSCript.
Microsoft (R) Windows Script Host Version 5.7
Copyright (C) Microsoft Corporation. All rights reserved.
............................
............................
......VB Code Running........
..........here.............
0 was unexpected at this time.
为什么我得到“0在这个时候出乎意料。”批处理文件中的错误。 我怎样才能将错误代码从vbscript传递到其父批处理脚本?
欢迎任何帮助....... 提前谢谢。
感谢PA的回复.. 实际上现在我正在设置一个不同的变量,即ERRORLEV,如下所示:
IF ERRORLEVEL 0 SET /a ERRORLEV=0
IF ERRORLEVEL 1 SET /a ERRORLEV=1
IF ERRORLEVEL 2 SET /a ERRORLEV=2
echo the value of ERRORLEV is :
echo %ERRORLEV%
if %ERRORLEV% EQU 0 (
echo Nothing is to be Done
EXIT /B 0
)
IF %ERRORLEV% EQU 2 (
echo Let start then.......
EXIT /B 1
)
现在最好的部分是变量ERRORLEV正确设置/回显的事件。 但是我无法在'IF'命令中使用它.. 我得到的输出:
the value of ERRORLEV is :
2
0 was unexpected at this time.
你能说一下,可能是什么情况???
答案 0 :(得分:2)
如HELP IF
ERRORLEVEL number - 指定最后一个程序运行时的真实条件 返回退出代码等于或大于的数字 指定。
因此您需要使用这种特殊语法测试ERRORLEVEL。
IF ERRORLEVEL 2 DOTHIS &goto :eof
IF ERRORLEVEL 1 DOTHAT &goto :eof
DOGOOD