バッチファイル(.bat)でコメントアウトする方法を解説します。
バッチファイルには REM と ::(ダブルコロン)の2つのコメント構文があります。この記事では、基本的な書き方から、REM と :: の違い・使い分け、複数行をまとめてコメントアウトする方法、行の途中にコメントを入れる方法、:: を使うとエラーになるケースまで詳しく解説します。
REM でコメントアウトする(基本)
REM(Remarkの略)はバッチファイルの標準的なコメント構文です。REM の後に半角スペースを入れてコメントを書きます。
@echo off REM バックアップ処理を実行するバッチファイル REM 作成日: 2026-03-04 echo バックアップを開始します。 REM ここでファイルをコピーする xcopy C:\data\*.* C:\backup\ /E /Y echo バックアップが完了しました。
REM で始まる行は実行時に完全に無視されます。大文字・小文字は区別されないため、rem でも Rem でも同じです。
::(ダブルコロン)でコメントアウトする
:: を行の先頭に置くと、その行がコメントとして扱われます。
@echo off :: バックアップ処理を実行するバッチファイル :: 作成日: 2026-03-04 echo バックアップを開始します。 :: ファイルをコピー xcopy C:\data\*.* C:\backup\ /E /Y echo バックアップが完了しました。
:: は厳密にはコメント構文ではなく、無効なラベルとして処理されます。ラベル(:名前)として解釈されるものの、:: という名前のラベルには goto でジャンプできないため、実質的にコメントとして機能します。
REM と :: の違い・使い分け
どちらもコメントとして使えますが、挙動に違いがあります。
REM |
:: |
|
|---|---|---|
| 種類 | 正式なコマンド | 無効なラベル |
| for / if ブロック内 | 使える | エラーになる場合がある |
| @echo off 無しの場合 | コメント内容が表示される | 表示されない |
| 処理速度 | わずかに遅い | わずかに速い |
| 可読性 | 公式で分かりやすい | 短くてスッキリ |
おすすめの使い分け
@echo off REM ============================================ REM 日次バックアップ処理 REM 作成者: 管理者 REM 更新日: 2026-03-04 REM ============================================ :: --- ステップ1: ファイルコピー --- xcopy C:\data\*.* C:\backup\ /E /Y :: --- ステップ2: ログ出力 --- echo %date% %time% バックアップ完了 >> backup.log
- ファイルのヘッダー(説明・作成者・日付) →
REM(正式なコメント) - 処理の区切り・簡単なメモ →
::(短くて見やすい) - for / if ブロックの中 →
REMのみ使用(後述)
:: を for / if ブロック内で使うとエラーになる
:: は for 文や if 文の括弧ブロック内で使うとエラーになることがあります。これはバッチファイルで最もよくあるコメントの落とし穴です。
エラーになるコード
@echo off
for %%f in (a.txt b.txt c.txt) do (
:: ファイルをコピー ← これがエラーの原因!
copy %%f C:\backup\
)
このコードを実行すると、予期しないエラーや動作不良が発生します。:: がラベルとして解釈され、for ブロックの構文が壊れるためです。
正しい書き方(REM を使う)
@echo off
for %%f in (a.txt b.txt c.txt) do (
REM ファイルをコピー
copy %%f C:\backup\
)
for、if、else の括弧ブロック内では、必ず REM を使いましょう。
@echo off
if exist C:\data\ (
REM フォルダが存在する場合の処理
echo データフォルダが見つかりました。
) else (
REM フォルダが存在しない場合の処理
echo データフォルダが見つかりません。
)
複数行をまとめてコメントアウトする方法
バッチファイルには他の言語のような複数行コメント構文(/* */ など)がありません。複数行をコメントアウトするには、以下の方法を使います。
方法1: REM を各行に付ける(最もシンプル)
REM 以下の処理は一時的に無効化 REM copy C:\data\file1.txt C:\backup\ REM copy C:\data\file2.txt C:\backup\ REM copy C:\data\file3.txt C:\backup\
少数の行をコメントアウトする場合はこれで十分です。
方法2: goto でスキップする(大量の行向け)
@echo off echo 処理を開始します。 goto :skip_section =================================== この間の行はすべて無視されます。 コメントだけでなく、コマンドも無効化されます。 copy file1.txt backup1.txt del temp.txt 何を書いても実行されません。 =================================== :skip_section echo 処理を続行します。
goto :skip_section から :skip_section ラベルまでの間が丸ごとスキップされます。大量のコードを一時的に無効化したいときに便利です。
方法3: if文で無効化する
if 1==0 (
echo この行は実行されません。
copy file1.txt backup1.txt
del temp.txt
)
1==0 は常に偽なので、ブロック内のコードは実行されません。goto を使いたくない場合の代替手段です。
行の途中にコメントを入れる方法
コマンドの後ろにコメントを追加したい場合は、&REM または &:: を使います。
@echo off set COUNT=10 &REM ループの最大回数 set OUTPUT=C:\result &REM 出力先フォルダ xcopy C:\data\*.* C:\backup\ /E /Y &REM バックアップ実行
& はコマンドの連結演算子で、「前のコマンドを実行した後に次のコマンドを実行する」という意味です。&REM で「コマンドの後に REM(コメント)を実行する」形になります。
注意点
&:: も使えますが、for / if ブロック内では :: と同じ問題が発生します。行末コメントには &REM を使うのが安全です。
REM OK: &REM は安全
for %%f in (*.txt) do (
copy %%f C:\backup\ &REM ファイルをコピー
)
REM NG: &:: はブロック内でエラーの可能性
for %%f in (*.txt) do (
copy %%f C:\backup\ &:: ファイルをコピー ← 危険!
)
@echo off なしの場合のコメント表示
@echo off を書かない場合(または echo on の状態)、REM と :: では表示が異なります。
REM これはREMコメント :: これはダブルコロンコメント echo Hello
echo on の場合の出力:
C:\>REM これはREMコメント C:\>echo Hello Hello
REM の行はコメント内容も含めて画面に表示されますが、:: の行は表示されません。デバッグ時にコメントを表示したくない場合は :: が便利です。
コメントの書き方のベストプラクティス
ファイルヘッダーのテンプレート
バッチファイルの先頭に処理概要を書いておくと、メンテナンス性が大幅に向上します。
@echo off REM ============================================ REM バッチ名: daily_backup.bat REM 概要 : 日次バックアップ処理 REM 引数 : なし REM 戻り値 : 0=正常終了, 1=異常終了 REM 作成日 : 2026-03-04 REM 更新履歴: REM 2026-03-04 新規作成 REM ============================================
セクション区切り
処理の区切りにはコメントで見出しを付けると、長いバッチファイルでも読みやすくなります。
REM --- 初期設定 --- set BACKUP_DIR=C:\backup set LOG_FILE=C:\logs\backup.log REM --- バックアップ実行 --- xcopy C:\data\*.* %BACKUP_DIR% /E /Y if %ERRORLEVEL% neq 0 goto :error REM --- ログ出力 --- echo %date% %time% 完了 >> %LOG_FILE%
一時的なコード無効化
デバッグや テスト時に一時的にコードを無効化する場合は、REM を付けるのが一般的です。
REM 本番では以下を有効にする REM del C:\temp\*.tmp REM デバッグ用(テスト完了後に削除する) echo [DEBUG] 現在の ERRORLEVEL: %ERRORLEVEL%
まとめ
バッチファイルのコメントアウトには REM と :: の2つの方法があります。
| やりたいこと | 書き方 |
|---|---|
| 行全体をコメントアウト | REM コメント または :: コメント |
| for / if ブロック内 | REM コメント(:: は使わない) |
| 行の途中にコメント | コマンド &REM コメント |
| 複数行を一括コメント | goto :skip 〜 :skip で囲む |
| ファイルのヘッダー | REM で処理概要・作成者・日付を記載 |
ポイント:
for/ifの括弧ブロック内では::を使わずREMを使う- 複数行のコメントアウトは
gotoでスキップするのが実用的 - 行末コメントは
&REMで追記できる - ファイル先頭のヘッダーコメントでメンテナンス性が向上する
