将变量从vbscript传递到批处理文件

时间:2012-05-10 14:52:17

标签: vbscript batch-file

假设我有一个批处理文件,我在其中调用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.

你能说一下,可能是什么情况???

1 个答案:

答案 0 :(得分:2)

HELP IF

中所述

ERRORLEVEL number - 指定最后一个程序运行时的真实条件 返回退出代码等于或大于的数字 指定。

因此您需要使用这种特殊语法测试ERRORLEVEL。

IF ERRORLEVEL 2 DOTHIS &goto :eof
IF ERRORLEVEL 1 DOTHAT &goto :eof
DOGOOD