0

次のような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.

あなたは提案できますか、何が起こっているのでしょうか?

4

1 に答える 1

2

で述べたようにHELP IF

ERRORLEVELnumber-最後に実行されたプログラムが指定された数以上の終了コードを返した場合に真の条件を指定します。

したがって、この特別な構文を使用してERRORLEVELをテストする必要があります。

IF ERRORLEVEL 2 DOTHIS &goto :eof
IF ERRORLEVEL 1 DOTHAT &goto :eof
DOGOOD
于 2012-05-10T16:00:17.537 に答える