【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】

WSH初心者です。
WSH(remote.vbs)からWMI使用で別サーバのA.batを実行しているのですが、
A.batの戻り値はどのように取得すれば良いのでしょうか?

-■remote.vbs(一部抜粋)------------------------------------------
' #WMI に接続 Wim32_Process クラスを取り出す
Set clsProcess = GetObject("winmgmts:{impersonationLevel=impersonate}" & "!" & リモート先PC & "Win32_Process")
' #プロセスの作成
lngResult = clsProcess.Create(A.bat, null, null, processId)
--------------------------------------------------------------
-■A.bat------------------------------------------
exit /B %RetCode%
-------------------------------------------------

A.batで返している%RetCode%の値をremote.vbs側で取得したいのです。

どなたかご存じでしたらご教授の程よろしくお願い致します。

A 回答 (1件)

>A.batで返している%RetCode%の値をremote.vbs側で取得したいのです。



取得は出来ません。

A.batの終了値はA.batを起動したシェル(cmd.exe等)には伝わりますが、それより上位(呼び出し元)には伝わりません。

上位に伝わるのは「シェル(cmd.exe等)の終了コード」であり、それは「常に、正常終了を意味する0」です(cmd.exeが「リードエラー。(A)bort,(R)etry,(F)ail?」などの致命的エラーを吐いて強制終了した場合のみ、0以外が返ってきます)

こういう事をしたい場合は

-■A.bat------------------------------------------
echo %RetCode% > result.txt
exit
-------------------------------------------------

など、結果をテキストファイルなどに吐き出させ、呼び出し元に戻ってきてから、吐き出されたテキストファイルをオープンして中身を読み込んで結果を得るしか、方法はありません。

また、呼び出し元で、呼び出したプロセスが終了したかどうか判らない場合もあるので、その場合は、以下のようにします。

1.呼び出し元で、結果ファイルを削除する。
2.リモートでプロセスを起動する。
3.呼び出し元は、結果ファイルが生成されるまで待つ。
4.呼び出されたプロセスは、終了時に結果ファイルを生成する。
5.呼び出し元が結果ファイルの生成を検知したら、中身を読んで結果を取り出す。
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
直接は受け取れないのですね。。
ファイルでの授受は成功しました!ご回答有難うございました☆

お礼日時:2011/06/13 14:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報