バッチファイルの作り方
バッチファイルとは、コマンドプロンプトで実行する複数のコマンドをテキストファイルにまとめ、一括実行できるようにしたファイルです。ダブルクリックするだけで、記述したコマンドが順番に自動実行されます。
拡張子は .bat または .cmd が使われます。どちらもほぼ同様に動作しますが、現在では .cmd が新しい形式です。本記事では一般的に広く使われる .bat を例に解説します。
バッチファイルを使うと、以下のような作業を自動化できます。
- 毎日行うファイルのバックアップ
- 複数のフォルダの一括作成
- アプリケーションの起動や設定の切り替え
- ログファイルの整理や削除
バッチファイルはプログラミングの知識がなくても作成できます。コマンドプロンプトで使えるコマンドをそのままテキストファイルに書くだけでOKです。
バッチファイルの作り方(手順)
Step 1: メモ帳で新規ファイルを開く
まずはメモ帳(Notepad)を開きます。スタートメニューで「メモ帳」と検索するか、Win + R キーで「ファイル名を指定して実行」を開いて notepad と入力して Enter を押してください。
Step 2: コマンドを記述する
メモ帳に以下の内容を入力してください。
@echo off
echo こんにちは!バッチファイルが実行されました。
pause
各コマンドの意味は後ほど詳しく説明します。まずはこの3行をそのまま入力してみてください。
Step 3: 拡張子 .bat を付けて保存する
メモ帳のメニューから「ファイル」→「名前を付けて保存」を選択します。保存ダイアログが開いたら、以下の点に注意して保存してください。
- ファイル名を
"hello.bat"と入力する(ダブルクォーテーションで囲む) - ファイルの種類を「すべてのファイル (.)」に変更する
- 文字コードを「ANSI」に設定する
ファイル名をダブルクォーテーション(")で囲まないと、hello.bat.txt という名前で保存されてしまいます。必ず "hello.bat" のようにクォーテーションで囲んでください。
保存後、エクスプローラーでファイルのアイコンが歯車マークに変わっていれば、バッチファイルとして正しく認識されています。
Step 4: ダブルクリックで実行する
保存した hello.bat をダブルクリックすると、コマンドプロンプトのウィンドウが開いて実行されます。
こんにちは!バッチファイルが実行されました。
続行するには何かキーを押してください . . .
このように表示されれば成功です。何かキーを押すとウィンドウが閉じます。
@echo off の意味
@echo off はバッチファイルの先頭に書く定型文です。
echo off — バッチファイルの実行中、コマンド自体を画面に表示しないようにします。通常、バッチファイルを実行すると実行されたコマンドがそのまま表示されますが、echo off を書くことでコマンドが非表示になり、結果だけがすっきり表示されます。
@(アットマーク) — echo off コマンド自体も画面に表示しないようにします。
@echo off がある場合とない場合の違いを見てみましょう。
@echo off なし:
C:\Users\user>echo こんにちは
こんにちは
C:\Users\user>pause
続行するには何かキーを押してください . . .
@echo off あり:
こんにちは
続行するには何かキーを押してください . . .
@echo off を使うと、コマンド自体が非表示になってすっきりした出力になります。特別な理由がない限り、バッチファイルの先頭には必ず @echo off を書くことをお勧めします。
echo コマンドは文字を画面に表示するためのコマンドです。echo 表示したいテキスト のように使います。詳しくは
pause コマンドの役割
pause コマンドは、バッチファイルの実行を一時停止し、「続行するには何かキーを押してください …」というメッセージを表示します。
バッチファイルをダブルクリックで実行すると、処理が完了した瞬間にウィンドウが閉じてしまいます。結果を確認する前に閉じてしまうのを防ぐため、最後に pause を入れておくのが基本です。
バッチファイルをコマンドプロンプトから直接実行する場合は、ウィンドウが自動では閉じないため pause は必須ではありません。ダブルクリック実行を想定している場合に特に重要です。
詳しくは
を参照してください。rem コマンドでコメントを書く
バッチファイルにコメント(説明文)を書くには rem コマンドを使います。rem で始まる行は実行されず、無視されます。
@echo off
rem このバッチファイルはサンプルです
rem 作成者: 山田太郎
rem 作成日: 2026-04-24
echo 処理を開始します...
rem ここで何らかの処理を行う
echo 処理が完了しました。
pause
コメントを書くことで、後からバッチファイルを見返したときや他の人が使うときに内容が理解しやすくなります。
rem の代わりに :: を使ってコメントを書く方法もありますが、IF ブロックや FOR ループの内部でエラーになることがあります。rem を使うほうが安全です。詳しくは
実践例:ファイルをバックアップするバッチファイル
指定フォルダのファイルを日付付きのバックアップフォルダにコピーするバッチファイルです。
@echo off
rem ========================================
rem ファイルバックアップスクリプト
rem 実行するたびに日付付きフォルダにバックアップします
rem ========================================
setlocal
rem バックアップ元とバックアップ先を設定
set SOURCE=C:\Users\%USERNAME%\Documents\作業フォルダ
set BACKUP_ROOT=D:\Backup
rem 現在の日付を取得してフォルダ名に使用(例: 20260424)
set TODAY=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
set DEST=%BACKUP_ROOT%\backup_%TODAY%
echo バックアップを開始します...
echo バックアップ元: %SOURCE%
echo バックアップ先: %DEST%
echo.
rem バックアップ先フォルダが存在しない場合は作成
if not exist "%DEST%" mkdir "%DEST%"
rem ファイルをコピー
xcopy "%SOURCE%\*" "%DEST%\" /E /Y /I
echo.
echo バックアップが完了しました。
echo 保存先: %DEST%
echo.
endlocal
pause
このスクリプトのポイントを説明します。
set— 変数を定義します。SOURCEやDESTにパスを設定することで、後から変更しやすくなります%DATE%— 現在の日付を取得する環境変数です。%DATE:~0,4%のように書くことで日付の一部だけを取り出せますif not exist— フォルダが存在しない場合のみ処理を実行しますxcopy— ファイルをコピーします。/Eはサブフォルダも含めてコピー、/Yは上書き確認をスキップ、/Iはフォルダとして認識させるオプションです
バックアップ元のパス(SOURCE)とバックアップ先のパス(BACKUP_ROOT)は、ご自身の環境に合わせて変更してください。存在しないパスを指定するとエラーになります。
管理者として実行する方法
バッチファイルによっては、管理者権限が必要な操作(システムフォルダへの書き込みやサービスの制御など)を行うことがあります。
バッチファイルを右クリックすると、コンテキストメニューに「管理者として実行」が表示されます。詳しくは
を参照してください。管理者として実行が必要なバッチファイルには、コメントで明記しておくとよいでしょう。
@echo off
rem ※ このバッチファイルは管理者として実行してください
rem 右クリック → 「管理者として実行」を選択してから実行してください
echo 管理者権限で実行中...
pause
よくある間違いと対処法
文字化けが発生する(エンコードの問題)
日本語を含むバッチファイルで文字化けが発生する場合、ファイルの文字コードが原因である可能性が高いです。
メモ帳でファイルを保存する際、Windows 10 以降のデフォルト文字コードは「UTF-8(BOM あり)」です。しかし、コマンドプロンプトは通常 Shift-JIS(ANSI)で動作するため、UTF-8 で保存すると文字化けが発生することがあります。ファイルを保存する際は文字コードを「ANSI」に設定してください。
どうしても UTF-8 を使いたい場合は、バッチファイルの先頭に chcp 65001 > nul を追加することで対応できます。ただし、環境によっては動作が不安定になることがあります。文字コードの詳細については
拡張子が .txt になってしまう
メモ帳で保存する際にファイル名をダブルクォーテーションで囲まないと、hello.bat.txt のように拡張子が .txt になってしまいます。エクスプローラーで拡張子が表示されていない場合は「表示」→「ファイル名拡張子」にチェックを入れて確認してみてください。
パスにスペースが含まれる場合
ファイルパスやフォルダ名にスペースが含まれる場合は、必ずダブルクォーテーションで囲む必要があります。
@echo off
rem 誤り:スペースを含むパスをクォートしていない
copy C:\My Documents\file.txt D:\Backup\
rem 正しい:パスをダブルクォーテーションで囲む
copy "C:\My Documents\file.txt" "D:\Backup\"
Program Files や My Documents など、スペースを含むフォルダ名は Windows によく存在します。パスを指定する際は、常にダブルクォーテーションで囲む習慣をつけることをお勧めします。
まとめ
| 項目 | 内容 |
|---|---|
| 作成方法 | メモ帳でコマンドを記述し、.bat 拡張子で保存 |
@echo off | コマンドの表示を抑制する定型文 |
echo | テキストを画面に表示するコマンド |
pause | キー入力待ちにしてウィンドウを閉じさせない |
rem | コメントを書くコマンド |
| 文字コード | ANSI(Shift-JIS)推奨 |
| スペースを含むパス | ダブルクォーテーションで囲む |