リンク: プロセス・スレッド編.

Q VBのアプリケーションの戻り値によってバッチファイルで分岐するには?

MS-DOSで作成したアプリケーションでは、終了時に終了コードを指定すれば、バッチファイルの ERRORLEVEL によってプログラムを分岐できましたが、VBのアプリケーションの戻り値によってバッチファイルを分岐させる事はできるのでしょうか?

A ファイル経由で分岐できます。

まず、VBから ERRORLEVEL の設定はすることができません。そこで他の方法を考えると、バッチファイルの IF 文で使用できるのは環境変数か、ファイルの存在のチェックだけです。簡単な方法としては、ファイルを VBで作成して、それを IF 文で判別させるのが良いと思います。

例として、3つのボタン配列を作成して、押されたボタンによってバッチファイルを分岐させてみましょう。
まづ、VB側のプログラムです。

Private Sub Command1_Click(Index As Integer)
On Error Resume Next

Kill “C:\TEMP.TMP”
Kill “C:\TEMP\1.TMP”
Kill “C:\TEMP\2.TMP”

Open “C:\TEMP\” & Format$(Index, “0″) & “.TMP” For Output As #1
Close #1

End
End Sub

見ても分かるように、まず Kill で以前に作られたファイルを削除してから、 Index に渡された値によって、”C:\TEMP.TMP”、”C:\TEMP\1.TMP”、”C:\TEMP\2.TMP” のいずれかのファイルを作成します。ファイルを作成したらすぐに End で終了します。
次にバッチファイルですが、次のようなバッチファイルを作成します。

START /W Project1.exe
IF EXIST C:\TEMP.TMP GOTO LABEL0
IF EXIST C:\TEMP\1.TMP GOTO LABEL1
IF EXIST C:\TEMP\2.TMP GOTO LABEL2

:LABEL0
ECHO Return = 0
PAUSE
EXIT

:LABEL1
ECHO Return = 1
PAUSE
EXIT

:LABEL2
ECHO Return = 2
PAUSE
EXIT

最初の START というコマンドは、/W というオプションをつけると、/W 以降に書かれたプログラムを実行して、終了するまで待ってくれます。前述のVBのプログラムを Project1.exe とすれば、押されたボタンによって、”C:\TEMP.TMP”、”C:\TEMP\1.TMP”、”C:\TEMP\2.TMP” のいずれかが作成されているはずです。作成されたファイルによって、LABEL0、LABEL1、LABEL2のいずれかにジャンプして ECHO で Return = 0 等を表示します。

(注意)このページの内容は、Visual Basic5.0(SP3) を対象に記述されています。他のバージョンでは、対応できないこともあるので、ご注意願います。
(注意) ここでの情報については、あくまでも各自の責任にて、充分にテストを行ってご使用ください。内容に関する質問については、回答できる保証がありませんので、予めご了承願います。