ここではWindowsのバッチファイルの基本的な書き方について紹介します。

ECHO コマンド

文字列をコマンドプロンプトに表示する

ECHOコマンドは任意の文字列をコマンドプロンプトに表示することができます。

echo バッチ処理を開始します
C:\work>echo バッチ処理を開始します
バッチ処理を開始します


実行したコマンドを非表示にする

@echo offと記述することで、バッチファイル内のコマンドの実行結果を非表示にすることができます。

@echo off
echo バッチ処理を開始します
バッチ処理を開始します


PAUSE コマンド

キーが押されるまで処理を一時停止する

PAUSE コマンドはバッチファイルの処理を一時停止して、何かキーが押されるのを待つことができます。

@echo off
echo バッチ処理を開始します

PAUSE
バッチ処理を開始します
続行するには何かキーを押してください . . .


REM コマンド

コメントを記述する

REM コマンドはバッチファイル内にコメントを記述します。

@echo off
rem 処理開始
echo バッチ処理を開始します
バッチ処理を開始します


SET コマンド

変数を定義する

SET コマンドはバッチファイルで変数を定義することができます。変数を使用する場合は %変数名% と書きます。
以下は2つの変数の間に \ を入れて結合しています。

@echo off
SET FILE_PATH=C:\work
SET FILE_NAME=TEST.bat
echo %FILE_PATH%\%FILE_NAME%
C:\work\TEST.bat


IF コマンド

条件分岐をする

IF コマンドはバッチファイルの中で条件分岐を行います。
以下は SET /P を使用して、ユーザーが入力した値を判断してメッセージを表示します。

@echo off
echo 処理を続行しますか?(Y/N)
SET /P ANSWER=

if "%ANSWER%"=="Y" (
    echo 処理を続行しました。
) else (
    echo 処理を中止しました。
)
処理を続行しますか?(Y/N)
Y
処理を続行しました。


ファイルの有無を判定する

IF コマンドと exist コマンドを組み合わせてファイルの有無を判定します。

@echo off
SET FILE_PATH=C:\work\test.txt

if exist %FILE_PATH% (
    echo ファイルが存在します。
) else (
    echo ファイルが存在しません。
)
ファイルが存在します。


ファイルかフォルダかを判定する

exist コマンドに \を付けることでフォルダであれることを判定します。

@echo off
SET FILE_PATH=C:\work\test.txt

if exist %FILE_PATH%\ (
    echo フォルダです。
) else (
    echo フォルダ以外です。
)
フォルダ以外です。


FOR コマンド

繰り返し処理をする

FOR コマンドはバッチファイルの中で繰り返し処理を行います。FOR コマンドで使用する変数は %%変数 と記述します。変数名は1文字のアルファベットに限られます。
以下はフォルダを指定して、フォルダ内で拡張子が txt のファイルを表示します。

@echo off
SET FOLDER=C:\work\

for %%f in (%FOLDER%*.txt) do (
  echo %%f
)
C:\work\a.txt
C:\work\b.txt
C:\work\c.txt


以上、Windowsのバッチファイルの基本的な書き方について解説しました。