バッチファイル
| 拡張子 | .bat, .cmd (Windows NT) |
|---|---|
| 種別 | スクリプト言語 |
バッチファイル(Batch File)とは、MS-DOS、OS/2、Windowsでのコマンドプロンプト(シェル)に行わせたい命令列をテキストファイルに記述したもの。バッチファイルを実行すると、シェルプログラム(一般に COMMAND.COMやcmd.exe)がそのファイルを読み、その中のコマンドを(通常)一行ずつ実行する。バッチファイルはUNIX系オペレーティングシステムのシェルスクリプトに相当する。
DOSのバッチファイルの拡張子は.BATである。他の環境のバッチファイルの拡張子は様々である。例えば、Windows NTやOS/2では.CMD が使われており、4DOS というフリーウェアでは .BTM が使われている。
AUTOEXEC.BATはブート処理の中で実行される特別なバッチファイル(自動実行バッチファイル)である。
目次 |
歴史 [編集]
マイクロソフトのDOSとWindowsのバッチプログラミングはこれらのオペレーティングシステム(OS)製品のリリースとともに発展してきた。これらOSに付属するコマンドインタプリタは2つの動作モードを持つ。一つは対話モード(コマンドプロンプトに従ってユーザーがコマンドを入力すると即座に実行される)とバッチモード(予め設定されたコマンド列を実行する)である。どちらのモードもUNIXのシェルや1980年代初期のCP/Mなどのコマンドインターフェイスがその考え方のベースとなっている。
MS-DOSオペレーティングシステムのバッチプログラム用インタプリタはCOMMAND.COMである。MS-DOS用バッチプログラムのうち比較的単純なコマンドはCOMMAND.COM自身が処理し(内部コマンド)、複雑なものは別の実行ファイルを呼び出して処理する(外部コマンド)。この系統のバッチプログラミングはMS-DOSからWindows 95、Windows 98、Windows Meまで発展していった。
最近のWindows(Windows 2000とWindows XP)はMS-DOSではなくWindows NTに基づいている。この系統ではcmd.exeというコマンド行インタプリタが使われ、COMMAND.COMとはある程度の互換性がある。MS-DOSのいくつかの機能が削除されているが、MS-DOSやMS-DOSベースのWindowsにはない新たな機能も多く追加されている。互換性維持のためCOMMAND.COMも未だに搭載されている。
@echo off [編集]
バッチファイルはコマンド行を実行する前に標準出力にその内容を表示するのがデフォルト動作となっている。これは通常必要とされないので echo off コマンドをバッチファイルの最初に記述してそれを防ぐ。しかし、そのままでは echo off コマンド自体は表示されてしまう。@ をコマンド行の先頭に置くと、その行は表示されないようになっているので、多くのバッチファイルには @echo off という行が先頭にある。
例 [編集]
単純なバッチファイルの例:
@echo off cls echo. echo Hello World, press any key to start AProgram.exe! pause > nul AProgram.exe echo. echo AProgram has finished whatever it was doing. Have fun today!
互換コマンドインタプリタ [編集]
マイクロソフト以外が提供するコマンドインタプリタにも様々なコマンドインタプリタがあり、強化された機能を提供している。4DOS はその一例である。
バッチプログラムを実行ファイルに変換するコンパイラもマイクロソフト以外からいくつか登場しているが、その品質は様々である。
IBMのOS/2オペレーティングシステムもマイクロソフトのOSと似たようなテキストベースのコマンド機能を持っている。
コマンド プロンプト [編集]
前の@echo offをワードパッド(メモ帳)に記入し、そのあとにstartを好きな分入れると、startの数だけコマンドプロンプトが起動する。