So-net無料ブログ作成
検索選択

BAT Tips:起動したexeの実行結果を取得する[startコマンドを使おう] [BAT]

WindowsのバッチTipsです。
バッチからexeを実行し、実行結果を判定して処理を分岐することは良くありますね。

@echo off
hogehoge.exe
if %ERRORLEVEL% EQU 0 goto …

しかし、気をつけないといけないことがあります。
それは、hogehoge.exeがコンソールアプリケーションか否かということです。
hogehoge.exeがコンソールアプリケーションであれば、上記で書いた方法で実行結果の判定が可能ですが、コンソールアプリケーション以外の場合は、実行結果の判定はできません。
理由は、バッチの処理がhogehoge.exeの実行完了を待っていないからです。
コンソールアプリケーションの簡単な見分け方ですが、hogehoge.exeをダブルクリックしてみて、DOS窓が開く場合は、コンソールアプリケーションです。

では、コンソールアプリケーション以外の場合はどうしたら良いのでしょうか。
答えは、startという内部コマンドを使えば解決できます。

start ["タイトル"] [/d パス] [/i] [/min | /max] [/separate | /shared] [処理優先度] [/wait] [/b] [コマンド] [パラメータ]

"タイトル" [コマンドプロンプト] ウィンドウのタイトルバーに表示するタイトルを指定する。
/d パス 開始するディレクトリを指定する。
/i cmd.exeが起動する基本環境でコマンドを実行する
/min ウィンドウを最小化した状態で起動する。
/max ウィンドウを最大化した状態で起動する。
/separate 別メモリ領域で、16ビットのプログラムを起動する。
/shared 共有メモリ領域で、16ビットのプログラムを起動する。
処理優先度 コマンド実行時の処理優先度を指定する。
  /low アイドル優先度クラスでアプリケーションを起動する。
  /normal 通常の優先度クラスでアプリケーションを起動する。
  /high 上位の優先度クラスでアプリケーションを起動する。
  /realtime リアルタイム優先度クラスでアプリケーションを起動する。
  /abovenormal 標準以上の優先度クラスでアプリケーションを起動する。
  /belownormal 標準以下の優先度クラスでアプリケーションを起動する。
/wait アプリケーションを起動し、それが終了するまで待機する。
/b 新しいウィンドウを開かずにアプリケーションを起動する。

バッチでは以下のように記述します。
@echo off
start /wait hogehoge.exe
if %ERRORLEVEL% EQU 0 goto …

これで、hogehoge.exeの実行完了まで待ち、%ERRORLEVEL%の判定が可能になります。
もし、start /wait しない場合の%ERRORLEVEL%は、前回のコマンドの実行結果が入っています。

次回をお楽しみに!!

nice!(2)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 2

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0