バッチファイルの作り方

にメンテナンス済み

バッチファイルとは、コマンドプロンプトで実行する複数のコマンドをテキストファイルにまとめ、一括実行できるようにしたファイルです。ダブルクリックするだけで、記述したコマンドが順番に自動実行されます。

拡張子は .bat または .cmd が使われます。どちらもほぼ同様に動作しますが、現在では .cmd が新しい形式です。本記事では一般的に広く使われる .bat を例に解説します。

バッチファイルを使うと、以下のような作業を自動化できます。

  • 毎日行うファイルのバックアップ
  • 複数のフォルダの一括作成
  • アプリケーションの起動や設定の切り替え
  • ログファイルの整理や削除
プログラミング知識は不要

バッチファイルはプログラミングの知識がなくても作成できます。コマンドプロンプトで使えるコマンドをそのままテキストファイルに書くだけでOKです。

バッチファイルの作り方(手順)

Step 1: メモ帳で新規ファイルを開く

まずはメモ帳(Notepad)を開きます。スタートメニューで「メモ帳」と検索するか、Win + R キーで「ファイル名を指定して実行」を開いて notepad と入力して Enter を押してください。

Step 2: コマンドを記述する

メモ帳に以下の内容を入力してください。

@echo off
echo こんにちは!バッチファイルが実行されました。
pause

各コマンドの意味は後ほど詳しく説明します。まずはこの3行をそのまま入力してみてください。

Step 3: 拡張子 .bat を付けて保存する

メモ帳のメニューから「ファイル」→「名前を付けて保存」を選択します。保存ダイアログが開いたら、以下の点に注意して保存してください。

  1. ファイル名を "hello.bat" と入力する(ダブルクォーテーションで囲む)
  2. ファイルの種類を「すべてのファイル (.)」に変更する
  3. 文字コードを「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 コマンドは文字を画面に表示するためのコマンドです。echo 表示したいテキスト のように使います。詳しくは

を参照してください。

pause コマンドの役割

pause コマンドは、バッチファイルの実行を一時停止し、「続行するには何かキーを押してください …」というメッセージを表示します。

- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>pause
続行するには何かキーを押してください …
C:\users\user>

バッチファイルをダブルクリックで実行すると、処理が完了した瞬間にウィンドウが閉じてしまいます。結果を確認する前に閉じてしまうのを防ぐため、最後に 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

よくある間違いと対処法

文字化けが発生する(エンコードの問題)

日本語を含むバッチファイルで文字化けが発生する場合、ファイルの文字コードが原因である可能性が高いです。

UTF-8(BOM あり)で保存すると文字化けが発生する

メモ帳でファイルを保存する際、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)推奨
スペースを含むパスダブルクォーテーションで囲む

関連記事

練習問題

練習問題

バッチファイルの先頭に書く @echo off の効果として正しいものはどれですか?

回答がサーバーに送信されることはありません
練習問題

メモ帳でバッチファイルを保存するとき、ファイル名を "hello.bat" のようにダブルクォーテーションで囲む理由は何ですか?

回答がサーバーに送信されることはありません
練習問題

バッチファイルで日本語が文字化けする場合、最も基本的な対処法はどれですか?

回答がサーバーに送信されることはありません
#コマンドプロンプト #バッチファイル #bat #入門 #作り方