Humanity

Edit the world by your favorite way

Windowsのバッチファイルからバッチファイルを呼ぶときはcallが必要なことを忘れてはいけない

callは、他のバッチファイルを呼び出すコマンドである。
バッチファイルの中から他のバッチファイルを呼び出す場合、
バッチファイルに他のバッチファイル名を記述しただけでは、
呼び出された側のバッチファイルが終了するとそこ動作が終了してしまい、
元のバッチファイルに戻ってくる事ができない。

コマンドプロンプトを使ってみよう! −バッチファイル−

つまり

ant

とかバッチファイル中で書くと、antが実はant.batでバッチファイルだったりした場合、
シェルスクリプトで言えばexecで実行したような挙動になる。ハマった。くそが。
つまりバッチファイルでコマンドを呼び出す時は、それがバッチファイルかどうか調べないといけない。くそが。


そういえばバッチファイルでexec相当の処理をするにはどうすればいいんだろう・・・?
もし対象コマンドが実行ファイル(たとえばgcc)だったらわざわざバッチファイル(run-gcc.batとか)に書いてそれを呼び出すとかしないといけないの・・・?

まぁそもそも「exec相当の処理」なんてないんだろうけど、
コールスタックだけ見れば同じような処理って意味です。