やる気のないやる気

辺境のSEがプログラミングとかガジェットとか技術書のレビューとかするブログ。毎日更新したいなぁ…。

【バッチ】STARTコマンドとCALLコマンドの違い

先輩がフォルダ内の全バッチを連続起動(all.batからa.bat開始→終了後にb.bat)するバッチを作ったけれど終了待ちにtimeoutコマンドで60秒待たせてたのを見たからバッチ(というかプログラム)を起動するコマンドをまとめてみる
(実行順序が決まってて、0.2秒で終わるバッチと40秒かかるバッチが混在してるから60秒待たせたらしい…)

ちなみにその時のバッチ

  start a.bat
  TIMEOUT /T 60
  start b.bat

■START
* 新しいプロセスとして開始
* 前のバッチが正常終了orエラー終了を画面で見てOK出してから次のバッチに行きたい場合とか並列実行する場合はSTART

  start /w a.bat
  start /w b.bat

a.batを手動で終了したらb.batが実行される

■CALL
* 同じプロセスで開始
* 確認無しで順次実行したい場合とかはこっち

  call a.bat
  call b.bat

a.batが終了次第、そのままb.batが実行される

ちなみにCALLは戻り値が取れるのも利点。
失敗の場合はそこで強制終了とかできる。