バッチファイル

コマンドインタプリタによって実行されるコマンドラインを含むテキストファイル

: batch fileMS-DOSOS/2WindowsCOMMAND.COMcmd.exe[1]UNIX
BAT
拡張子.bat, .cmd (Windows NT)
MIMEタイプapplication/x-bat
種別スクリプト言語

DOS.BATWindows NTOS/2.CMD 使[2]4DOS  .BTM 使[3]

AUTOEXEC.BAT

歴史

編集

DOSWindows (OS) OS2UNIX1980CP/M

MS-DOSCOMMAND.COMMS-DOSCOMMAND.COMMS-DOSWindows 95Windows 98Windows MeWindows 9x

Windows 2000Windows XPMS-DOSWindows NTWindows NTcmd.exe使COMMAND.COMMS-DOSMS-DOSMS-DOSWindowsCOMMAND.COM

2006.NET FrameworkWindows PowerShellWindows PowerShelldirWindowsPowerShellWindows.NET Core

代表的なコマンド

編集

echo

echo onecho offON/OFFON[4]echo off  echo off  @  @echo off 

コメント行はremで始める。remもコマンドの一種である[5]

テキスト画面を削除する。

別のバッチファイルやラベルで指定したプログラムに処理を移す。バッチファイルにはローカル変数とグローバル変数の概念があり、サブルーチンの中でメインルーチンにある変数と同じ名前の変数を使っても区別される。

他の多くのプログラミング言語と同じように指定した回数ループすることができるコマンドであるが、それのみならずフォルダ内のすべてのファイルを確認しそれらのファイルに対して処理を行うなどと行ったこともできる。基本的には、

for (オプション) %%変数名 in (ループの対象) do(コマンド)

in1%%do/r

/din1do

/l
for /l %%変数 in (開始値、増分、終了値) do コマンド

dododo

指定したディレクトリに移動することができる。cdで移動したディレクトリより階層が深いところにあるファイル、フォルダは、相対パスで参照可能になる。

指定したディレクトリの中のファイルのリストを表示する。これを使ってテキストファイル形式のファイルリストを作ることができる。オプションを設定することで特定のファイルのみ表示することもできる。




使:10(9)10shift

:
test.bat ar1 ar2 ar3 ar4 ar5 ar6 ar7 ar8 ar9 ar10

コード:

@echo off
shift
echo 第9引数は%9です。

出力:

第9引数はar10です。

特殊な変数[8]

編集

バッチファイル(コマンドプロンプト)には、コマンドの後の返り値、呼び出し時の引数、システムの設定などで値が変わる特殊な変数がある。

%1,%2,%3...%9

編集

1,2,3,4...1010shift

cdコマンドなどで指定したディレクトリのパス。この値はcdコマンドなどで変えられる。

%DATE%

編集

date

%TIME%

編集

hh:mm:ss.ms

%RANDOM%

編集

032767forfor3276715bit

%ERRORLEVEL%

編集

0-1if使

%CMDEXTVERSION%

編集

現在の拡張機能のバージョン番号。cmdコマンドで拡張機能を指定してコマンドプロンプトを起動できる。

%HIGHESTNUMANODENUMBER%

編集

コンピューター上の最大NUMAノード番号。使うことは滅多にない。

変数の読み込みタイミング[9]

編集
set num=1 
if %num% == 1 (
    set /a num+=1 
    echo %num%
)
pause

numnum221ifnum()11

2

「!」で囲って参照する方法

編集

!

!使

!2

setlocalコマンドを使う方法

編集

setlocal enabledelayedexpansion

使!

setlocal enabledelayedexpansionendlocal
  • 単純なバッチファイルの例:
@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, press any key to start AProgram.exe!

AProgram has finished whatever it was doing. Have fun today!
@echo off
echo Hello world!!
pause > nul

画面出力:

Hello world!!
3の倍数ならFizz、5の倍数ならBuzz、15の倍数ならFizz Buzzと表示し、FizzBuzz.txt に結果を出力
@echo off
setlocal enabledelayedexpansion
cd /d %~dp0
if exist %cd%\FizzBuzz.txt del %cd%\FizzBuzz.txt
for /l %%i in (1,1,100) do (
set echo=
set /a f=%%i%%3,b=%%i%%5
if !f!==0 set echo=!echo!Fizz
if !b!==0 set echo=!echo!Buzz
if "!echo!"=="" set echo=%%i
echo !echo!>>%cd%\FizzBuzz.txt
)

画面出力:なし