301) Windows2000SVのDOSバッチについて質問 破魔 2003/06/18(水) 20:38 |
|
Windows2000ServerにてMS-DOSのバッチを使用するのですが、 UNIXのShellのようにバッチAからバッチBを呼んで 戻り値の判断を行いたいんですが、 どの様にすればよろしいでしょうか? またバッチからEXEの戻り値を取得する場合も教えてください。 よろしくお願いします。 下記参考 バッチA.bat echo %COMPUTERNAME% start /wait /b バッチB.bat inpara <=ここでバッチBの戻り値を取得したい! exit /b 終了コード バッチB.bat start /wait /b ***.exe inpara <=ここでEXEの戻り値を取得したい! exit /b 終了コード |
|
304) Re:Windows2000SVのDOSバッチについて質問 YanaKen 2003/06/19(木) 05:55 |
|
破魔 さん、こんにちは。 >UNIXのShellのように この掲示板はUNIXの知識前提じゃないですし、実際ぼくはUNIXのユーザーじゃないので「のように」が何を指してるのかはわかりません。なのでご質問の趣旨が把握しきれてない可能性はあると思いますが、以下とりあえず……。 といいつつ、実のところぼくはEXITの/Bスイッチに気づいてませんでした(^^;。 元祖MS-DOSや95系にはない機能ですし、手元のWindows2000 Professionalで見る限りGUI版ヘルプには記載されておらず、コマンド・プロンプト上のEXIT /? でテキスト版ヘルプを見たときしか出てこないんですよね。教えてくださってありがとう。確かにこれを使えばバッチからバッチに戻り値を渡せますね。 典型的な使い方としては、たとえばこんな感じになると思います。↓ :A.BAT (前処理) call b.bat if errorlevel ..... :B.BAT XXXX.EXE exit /b %errorlevel% ご質問では.exeやバッチファイルの起動に start /wait (/b)をお使いですが、特にバッチファイルをstart /waitで呼んでる部分は「callでも実質は同じじゃないのかな」という気がします。で、上の例のように、startを使わないぶんには戻り値は if errorlevelや%errorlevel%でチェックできます。 また、少し実験してみた範囲では、/Bを除去すればSTART /WAITで起動したプロセスの実行結果も拾えるようです。 YanaKen [個人homepage] [@pay導入について] [YanaKenの@pay窓口] |