【问题标题】:Pass variable from a vbscript to batch file将变量从 vbscript 传递到批处理文件
【发布时间】:2012-05-19 04:21:42
【问题描述】:

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

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

【问题讨论】:

    标签: vbscript batch-file


    【解决方案1】:

    HELP IF中所述

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

    所以你需要用这个特殊的语法来测试 ERRORLEVEL。

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

    【讨论】:

    • 谢谢..PA我按照你的方式做了..它的工作原理......但我仍然很困惑为什么它不能通过新编辑中提到的方法工作?有什么建议吗??.....
    • 你需要颠倒检查顺序,因为IF ERRORLEVEL检查代码是否等于或更大
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    相关资源
    最近更新 更多