読者です 読者をやめる 読者になる 読者になる

くんすとの備忘録

プログラミングや環境設定の覚え書き。

UNIX使いのための、DOS-BAT解説 ~ forkとexec

BAT シェルスクリプト

はじめに

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

hoge.bat
start "" hoge.bat
call hoge.bat

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

解説

①hoge.bat

hoge.bat

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

サンプル

[test1.bat]

@echo off
echo before
hoge
echo after

[実行結果]

C:\work>test1
before
hoge

②start "" hoge.bat

start "" hoge.bat

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

サンプル

[test2.bat]

@echo off
echo before
start "" hoge
echo after

[実行結果]

C:\work>test2
before
after

(子窓)

C:\work>echo hoge
hoge

C:\work>

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

③call hoge.bat

call hoge.bat

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

サンプル

[test3.bat]

@echo off
echo before
call hoge
echo after

[実行結果]

C:\work>test3
before
hoge
after

まとめ

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

cmd /?
start /?
call /?
exit /?

広告