[前の記事]« FINDでは余分なデータまで検索されて不都合な場合
[次の記事]長いコマンドを複数行に分けて記述するための記号(継続文字)は? »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「ERRORLEVEL」索引へ

Win2000:バッチ処理結果をERRORLEVELで返すには

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窓口]
 
 


カテゴリー「ERRORLEVEL」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2003年06月18日 15:38に投稿されたエントリーのページです。

ひとつ前の投稿は「FINDでは余分なデータまで検索されて不都合な場合」です。

次の投稿は「長いコマンドを複数行に分けて記述するための記号(継続文字)は?」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート