【bat】バッチファイルでコメントアウトする方法

【bat】バッチファイルでコメントアウトする方法 bat

バッチファイル(.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\
)

forifelse の括弧ブロック内では、必ず 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 で追記できる
  • ファイル先頭のヘッダーコメントでメンテナンス性が向上する

あわせて読みたい