- note -

Batch

4/10

コメントいろいろ   - Last modified:2014/7/19

通常batファイルでコメントを書くには、内部コマンドであるremを使用します。
しかし「コメントの代替」となる構文は、他にもいくつかあります。
pathの通っているシステムフォルダに#.exeなんてファイルを入れれば
#もコメントみたく使えるようになったりしますがそれはひとまず置いておき、
batファイルで「コメントっぽく」使える構文について考えてみようと思います。

rem コメント

batファイルで使える通常のコメント形式です。
※行頭に2つ以上連続した空白や記号がある場合はコメント行と見なされない。 行末に^を書けば次の行もコメントアウトされます(※)。

break コメント

Windows XP以降ならまず問題なく使えるであろうコメント構文(?)です。
ただしコマンド実行となるので、文に影響を及ぼす特殊記号はそのままではコメント中に含めません。

:コメント

ただのラベルですが、コメントみたく使えます。
これを利用すると、なんとその場所にジャンプできるコメントになります。
タイプ数もremより短いという利点もあり、一部の書籍やサイトでは
:がbatのコメントだという記述もあったりします。
コメントじゃなくてラベルなのですが、発想の転換というやつなのでしょう。

goto hoge\nコメント\n:hoge

用がないならジャンプしちゃえばいいじゃない、ということで
そこはかとなくコメントっぽいものがかけるスペースを生み出します。
実は一番汎用性の高い複数行コメント実現方法だったりします。

exit /b\nコメント

誰がなんと言おうとコメントなのです。

^\n\nコメント

コメントでもなんでもありませんが、batの仕様(?)では
次の行が無視 … 正確には空コマンドに置き換わるようで、&や<>は機能する。 ^だけの行に空行を続けると、さらにその次の行が無視されます。
コメントというより、batの処理を誤魔化す偽装工作用の構文として
利用価値があったりなかったりするかもしれません。

%コメント%

定義されていない環境変数は構文解析時に削除されることを利用したコメントです。
解析されてしまうので、breakと同じく特殊記号はコメント中に含めません。

!コメント!

%の形式と同じく環境変数の展開を利用したものですが、
こちらは遅延展開が有効になっていないと使えません。

2>nul コメント

2>nul … 標準出力に出力される場合は>nulも併用する。 厳密にはコメントではありませんが、なんとなくコメントっぽく使えます。
往々にしてerrorlevelも変化します。

2>nul (コメント)

こちらは範囲を()で指定する、複数行に対応したコメントっぽい構文です。
2>nulは()の前後どちらに書いても大丈夫です。

/* >nul 2>nul 3>nul 4>nul\n コメント \n>nul 2>nul 5>con 6>con */

コメント一つのために気合入れすぎ感がひしひしと伝わってきますが、
取り敢えずそれとなくコメントっぽく使えなくもないような気がする構文です。
実際に使う場合は以下のようにします。
/* >nul 2>nul 3>nul 4>nul …
/*と*/に意味は無く、それっぽさを出せればなんでもよい。
/* >nul 2>nul 3>nul 4>nul
複数行
コメント(?)
です
*/ >nul 2>nul 5>con 6>con
ただし、同一コンソール上で一回しか使えないという致命的欠陥を持っています。
なんというか、remだけあれば十分ですね。
0.
[納個麺戸]
:コメントですが、全角254文字が限界です。