次のような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.
あなたは提案できますか、何が起こっているのでしょうか?