バッチファイル

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

テンプレート:Infobox file format バッチファイルBatch File)とは、MS-DOSOS/2Windowsでのコマンドプロンプトシェル)に行わせたい命令列をテキストファイルに記述したもの。バッチファイルを実行すると、シェルプログラム(一般に COMMAND.COMcmd.exe)がそのファイルを読み、その中のコマンドを(通常)一行ずつ実行する。バッチファイルはUNIX系オペレーティングシステムのシェルスクリプトに相当する。

DOSのバッチファイルの拡張子.BATである。他の環境のバッチファイルの拡張子は様々である。例えば、Windows NTOS/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 95Windows 98Windows Meまで発展していった。

最近のWindows(Windows 2000Windows 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!

代表的なサンプル例①:Hello world!!

 @echo off
 echo Hello world!!
 pause >nul

代表的なサンプル例②:Fizz Buzz (3の倍数ならFizz、5の倍数ならBuzz、15の倍数ならFizz Buzz と表示し、FizzBuzz.txt に結果を出力)

 @echo off
 set c=0
 echo Fizz Buss Plogram >fizzbuzz.txt
 :loop
 set /a c+=1, d=c%%3, e=c%%5
 if %d%%e% == 00 (
   set out=%c% Fizz Buzz
 )else if %d% == 0 (
   set out=%c% Fizz
 )else if %e% == 0 (
   set out=%c% Buzz
 )else (
   set out=%c%
 )
 echo %out%
 >>fizzbuzz.txt echo %out%
 goto loop

噂される危険性

バッチファイルを使ったいたずらファイルなどがyoutubeなどに出ている。 なかでも、ウィルスという触れ込みでアップしているものがある。 だが、それについては、ほぼ確実に嘘や投稿者の勘違いである。 悪質なジョークプログラムを作ることはできるが、基本的にはウィルスを製造することはできない。

動画投稿サイトにアップロードされているプログラムの例:

@echo off
start
start
start
start
start
  :
  :
  :
以下、startを繰り返す

互換コマンドインタプリタ

マイクロソフト以外が提供するコマンドインタプリタにも様々なコマンドインタプリタがあり、強化された機能を提供している。4DOS はその一例である。

バッチプログラムを実行ファイルに変換するコンパイラもマイクロソフト以外からいくつか登場しているが、その品質は様々である。

IBMのOS/2オペレーティングシステムもマイクロソフトのOSと似たようなテキストベースのコマンド機能を持っている。

関連項目

de:Microsoft Batch zh:批处理