- PR -

VB.NETからDOSの結果コードを取得したいのですが

1
投稿者投稿内容
さき
会議室デビュー日: 2005/07/13
投稿数: 12
投稿日時: 2005-07-13 19:50
はじめまして。
どうにもこうにも困ってしまった上、納期が近づいてきてしまったので
はじめて投稿しています。

VB.NETでDOSバッチを起動し、その戻り値を取得したいと考えています。

・ VB.NETでProcess.Startを使用し、バッチを起動
・ DOSバッチの戻り値は「EXIT /B 3」といった感じで出す
・ Process.ExitCodeでは1しか戻ってこない(3が取れない)

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9883&forum=7&start=0
ここも確認したのですが、私が求めているものとも少し違うようで・・。

実行後のProcessオブジェクトを確認すると、結果コードの「3」なんて
どこにもありません。
ということは、やはり無理なのでしょうか?

すみませんが、どなたかアドバイスいただけますか?
よろしくお願いします。
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-07-13 22:08
以下、コマンドプロンプトのexit /?の出力結果から引用。

引用:

CMD.EXE プログラム (コマンド インタープリタ) またはバッチ スクリプトを終了
します。
EXIT [/B] [終了コード]
 /B     CMD.EXE ではなく、現在のバッチ スクリプトを終了するように指定
       します。バッチ スクリプトの外から実行された場合、CMD.EXE を終
       了させます。
 終了コード 数値を指定します。/B が指定されている場合、ERRORLEVEL にその
       数値を設定します。CMD.EXE 終了をする場合、プロセス終了コードに
       その数値を設定します。



動かして試してないんで.NETから同じようにできるかはわかりませんが、コマンドプロンプトだと、問題のバッチを動かした後「echo %ERRORLEVEL%」と入力すると結果コードがとれますね。逆に、プロセス終了コードに設定したいなら、/Bをつけちゃいけないということはありませんか?
さき
会議室デビュー日: 2005/07/13
投稿数: 12
投稿日時: 2005-07-14 09:43
アドバイスいただき、ありがとうございます!
「/B」を除いたところ、Process.ExitCodeに取得できました!!!

実は、私はVB.NETでインターフェイス部分を作っているのですが、
その中で呼び出すDOSバッチは他システムなのです。
その他システム作成チームに「戻り値はどうやって出すの?」と聞いたところ、
「EXIT /B ○」と言われたので、あまり詳しくない私はそれを何とか取らないと・・・
と思ってしまい、ずーっと調べていたのです。
ちょっと泣きそうでした。

灯台下暗し?ですね。DOSコマンドの方がいけないとは。
とりあえず、「EXIT ○」って戻してもらえるようお願いしておきます。

本当にありがとうございました!!!
1

スキルアップ/キャリアアップ(JOB@IT)