こんなことを知りたい人へ向けて書いています
- 「コメント(コメントアウト)とは?」という方
- Windowsバッチファイルでコメントを使用する方法を知りたい方
- コメント(コメントアウト)はどんな時に役立つのか知りたい方
- 様々なコメント(コメントアウト)の方法について知りたい方
目次
コメントアウトとは
プログラミングの分野で「コメント」もしくは「コメントアウト」というと、プログラムコードの中に実際の動作には影響を及ぼさない部分のことを言います。
しかし、コメントアウトがプログラムに必要のない部分であるかというとそうではありません。
プログラムの実行動作に影響を及ぼさないからこそ、この部分にコードの内容についてのメモ書きをしたり、一時的にコードを無効化して動作テストをしたりと便利な使い方が多くあります。(これに関しては、本記事の「コメントアウトはどのようなときに役立つのか」で詳しく述べます)
この機能はプログラミングにおいて必須ともいえる機能で、Windowsバッチファイルに限らずすべてのプログラミング言語に搭載されている機能なのです。ただし、プログラミング言語によってコメントアウトの方法は異なっています。
以下では、Windowsバッチファイルでのコメントアウトの方法や使い方を紹介します。
正規のコメント(コメントアウト)の方法
ここで”正規の”と言っているのは、正規ではないコメントアウトの方法がWindowsバッチファイルにはあるからですが、まずは基本のコメントアウトの方法から学びましょう。
バッチファイル内でコメントアウトをする場合、「rem」コマンドを使用します。以下のように書きます。
1 |
rem [コメント] |
このように、「rem」コマンドの後にスペースを入れて、[コメント]には任意のコメントを書き込みます。これで、この行はコメントアウトされ、実際のバッチプログラムの動作には全く影響しなくなります。
実際のバッチファイルでの使用例は、
1 2 3 4 |
@echo off rem 「file.txt」を「copy_file.txt」へコピーする copy file.txt copy_file.txt |
といった感じです。この例では「rem」から始まる3行目がコメントアウトされ、そこに直後のコマンドのメモ書きをしています。3行目はプログラムの動作には全く影響しない行です。
注意点として、バッチファイルは丸々1行分をコメントアウトする方法しかないということを覚えておきましょう。
例えば、以下のように、
1 |
copy file.txt copy_file.txt rem コピーする |
として、「copy」コマンドの後に、「rem」コマンドを続けて書き、1行の途中からコメントアウトしようとしても、これは許されていません。エラーとなります。
また、複数行に渡ってコメントアウトしたい場合、
1 2 3 |
rem 「file.txt」を「copy_file.txt」へコピーする 注意:ファイルが存在する場合はコピーしない copy file.txt copy_file.txt |
というようにしてはいけません。この2行目はコメントアウト扱いにはならないからです。このように、複数行に渡るコメントを書きたい場合は、以下のようにします。
1 2 3 |
rem 「file.txt」を「copy_file.txt」へコピーする rem 注意:ファイルが存在する場合はコピーしない copy file.txt copy_file.txt |
とにかく、コメントアウトしたい行すべてに「rem」コマンドを入れるのです。
行の途中からコメントアウトできたり、複数行を一気にコメントアウトできたりするプログラミング言語は多く存在しますが、Windowsバッチファイルでは丸々1行分をコメントアウトする方法しかないと覚えておきましょう。
コメントアウトはどのようなときに役立つのか
コメントアウトを使うのはどのような時でしょうか。コメントアウトの役割は大きく分けて二つあります。
- コードの説明や注意点などを書いておく、メモ書きの役割
- プログラム作成途中で一時的にコマンドを無効にしたい場合に使用する
この2つです。まず、一つ目のメモ書きの役割はここまでにも使ってきました。前節の例で見た、
1 2 3 |
rem 「file.txt」を「copy_file.txt」へコピーする rem 注意:ファイルが存在する場合はコピーしない copy file.txt copy_file.txt |
などがそれにあたります。
過去に作成したプログラムを編集したいので、コードを見返す時を考えてみましょう。
短く単純なプログラムであれば、コードを見ただけですぐに何がどこに書いているかが理解できるでしょう。しかし、長く複雑なプログラムを理解するのは何がどこに書いているかを把握するのは時間がかかります。
それを少しでも楽にするのが、コメントアウトに書いているメモ書きなのです。以下は、コメントアウトでメモ書きをしたバッチファイルコードの例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@echo off rem 変換したいファイル名をfilename.txtへ一時的に保存 for %%a in (*.txt) do ( echo %%a >> filename.txt ) rem filename.txtからファイル名を取り出し、分割してrenameのファイル名に使用 setlocal ENABLEDELAYEDEXPANSION for /f "tokens=1,2 delims=_" %%a in (filename.txt) do ( rename %%a_%%b %1_%%b ) end setlocal rem 最後に一時ファイルであるfilename.txtを削除 del filename.txt |
コードのブロック単位で何をしているかをメモしています。このように、ブロック単位でメモ書きを残してもいいですし、少し詳しくメモしておきたい場合は、コマンド毎にメモ書きを残しておいてもよいでしょう。
何をやっているかや注意すべき点をメモ書きしているほど、見返したときに理解が早くなります。しかし、あまりにも詳しく詳細を記載していると、プログラムを作る時間がなくなりますので、そのあたりのバランスが大事でしょう。
メモ書きが役に立つのは、特に他人が自分のコードを読む必要があるときです。他人のコードを読むのは骨が折れる作業です。自分にはない癖や知らないコマンドが使われている場合もあります。そんなとき、コード内にコメントアウトを使ったメモ書きがあり、どこに何が書いてあるか分かるとすごく助かります。自分が他人のコードを見る場合もメモ書きがあるのとないのとでは、理解のスピードが全く違うでしょう。
コメントアウトを使用する場面の二つ目は、「プログラム作成途中で一時的にコマンドを無効にしたい場合」です。例えば、上記のコードをもう一度見てみましょう。最後の、
1 2 |
rem 最後に一時ファイルであるfilename.txtを削除 del filename.txt |
の部分ですが、これは一時的に保存していた「filename.txt」を最終的に削除する部分です。
プログラムの完成形では、最後に削除するコマンドを入れていますが、プログラムの作成途中では「filename.txt」を確認したいかもしれません。
そんなときは、「del filename.txt」の部分を削除すればよいのですが、一度完全に消してしまうと、最後にまた書き加える必要が出てきて面倒です。
そんなときは、「del filename.txt」を消してしまう代わりに、コメントアウトするとよいでしょう。以下のような感じです。
1 2 |
rem 最後に一時ファイルであるfilename.txtを削除 rem del filename.txt |
こうすることで、一時的にコマンドを無効化して実行テストをすることができます。そして、プログラムが完成したら最後にコメントアウト「rem」をとればよいでしょう。
まとめると、コメントアウトの使い道は大きく分けて2通りあり、
- コードの説明や注意点などを書いておく、メモ書きの役割
- プログラム作成途中で一時的にコマンドを無効にしたい場合に使用する
でした。これからのバッチファイルプログラミングでうまくコメントアウトを使っていってくださいね。
コメントアウトの方法は一つではない、様々なコメントアウト方法を紹介
ここまでは、「rem」コマンドを使ったコメントアウトの例を使って解説してきました。Windowsバッチファイルにはその他にもいくつかのコメントアウトの方法があります。
ただし、先に言っておきますが、ここで紹介するコメントアウトの方法は正規の方法ではなく、裏技的な方法になります。ですので特に理由がない限り、「rem」コマンドを使ったコメントアウトを推奨します。
まずは、コロン「:」を使う方法です。
1 |
: [コメント] |
コロンは通常、「goto」コマンドで行の移動を行うときの移動先を指定するためのラベルに使用されるものです(「ラベルとgoto(行の移動) -コマンド別解説-」)。そこで、「goto」コマンドで指定していないラベル名をコメントを書くことに使用することで、コメントを書くことに使用しています。
注意点はラベルとして使っている文字とたまたま同じものをコメントとしてしまった場合、「goto」コメントなどでそこへ飛んでしまう恐れがあるということです。それを回避するには以下で紹介するもう一つの方法を使います。
もう一つは、コロン「:」を二つ使う方法です。
1 |
:: [コメント] |
一つ目に1つコロン「:」を付け足しただけです。これで何が変わるのかというと、ラベル「:[ラベル名]」の指定方法と完全に区別することができます。このように、「::」を使っておけば、間違えてラベル名と同じコメントを書いてしまったということが無くなります。
まとめると、Windowsバッチファイルには3つのコメントアウトの方法があり、それは以下のようになります。
1 2 3 |
rem [コメント] : [コメント] :: [コメント] |
copy file.txt copy_file.txt ; rem コピーする
これならできる