はじめに

DOS-BATファイルから別のDOS-BATファイルを起動するには、色々な方法があります。

1
2
3
4
hoge.bat
start "" hoge.bat
call hoge.bat

これらの起動方法が、UNIXに於ける何と対応するのか、ということを簡単にまとめます。

解説

①hoge.bat

1
2
hoge.bat

これは、UNIXで言うところの exec に当たります。BATファイルを実行するとそちらに制御が移ります。

サンプル

[test1.bat]

1
2
3
4
5
@echo off
echo before
hoge
echo after

[実行結果]

1
2
3
4
C:\work>test1
before
hoge

②start "” hoge.bat

1
2
start "" hoge.bat

「START」で実行すると、UNIXで言うところの fork の動きになります。新しく「cmd.exe」が起動し、そちらでBATファイルが実行されます。

サンプル

[test2.bat]

1
2
3
4
5
@echo off
echo before
start "" hoge
echo after

[実行結果]

1
2
3
4
C:\work>test2
before
after

(子窓)

1
2
3
4
5
C:\work>echo hoge
hoge

C:\work>

※第一引数をダブルクォートで括るとBATファイル名ではなく、ウィンドウタイトルとして解釈されてしまうので注意。
必ず第一引数に"“なりBATファイル名なりを入れておくようにしておくのが無難。

③call hoge.bat

1
2
call hoge.bat

「CALL」で実行すると、UNIXで言うところの source の動きになります。同じプロセスの中で処理が起動し、終了するとプロンプトに戻ってきます。

サンプル

[test3.bat]

1
2
3
4
5
@echo off
echo before
call hoge
echo after

[実行結果]

1
2
3
4
5
C:\work>test3
before
hoge
after

まとめ

BATファイルの起動方法について、ざっくりと解説しました。細かいことは端折っていますが、気になる方には以下のヘルプが参考になると思います。

1
2
3
4
5
cmd /?
start /?
call /?
exit /?