• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBSからbat実行(WMI)して戻り値を取得する)

VBSからbat実行(WMI)して戻り値を取得する

このQ&Aのポイント
  • WSH初心者のため、WSH(remote.vbs)からWMIを使用して別サーバのA.batを実行し、A.batの戻り値を取得する方法を教えてください。
  • remote.vbsファイルでWMIを使用して別のサーバのA.batを実行していますが、どのようにA.batの戻り値を取得すれば良いですか?
  • VBSからWMIを使用して別のサーバのA.batを実行していますが、A.batの戻り値を取得する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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.呼び出し元が結果ファイルの生成を検知したら、中身を読んで結果を取り出す。

urahyster
質問者

お礼

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