キミは、バッチファイル(*.bat)でREM以外でコメントアウトする方法を知ってるか?


Unix/Linuxのシェルは#の1文字でコメントアウトができるが
バッチファイルは、REMコマンドを使う必要があって3文字も
打たなければならないので、メンドウ。
1文字でコメントアウトすることができないか試してみた。

DOSKEYで#をREMに割り当てる方法

バッチファイル
@echo off
doskey /INSERT #=REM $*
doskey /macros
# echo test
echo test2
# echo test3
echo test4
doskey /macros
結果
D:\workspace\batch_SandBox>D:\workspace\batch_SandBox\comment.bat
#=REM $*
'#' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
test2
'#' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
test4
#=REM $*

D:\workspace\batch_SandBox># echo test

D:\workspace\batch_SandBox>doskey /macros
#=REM $*

D:\workspace\batch_SandBox>D:\workspace\batch_SandBox\comment.bat
#=REM $*
'#' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
test2
'#' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
test4
#=REM $*

NG!!
コマンドプロンプトのプロセスに対しては、#がREMに割当られてるのだが
バッチファイルの中では実行できないようだ。


:を使う

本来は、「:」はラベルだがそのラベルに対応するGOTO文がなければ
何も実行されないため、意味をなさないラベルになる。
なので、コメントアウトもどきにつかことができそうだ。

バッチファイル
@echo off
echo test1
:echo test2
echo test3
:echo test4
結果
D:\workspace\batch_SandBox>D:\workspace\batch_SandBox\comment2.bat
test1
test3

OK!!

GOTO文があっても大丈夫

オリジナル

@echo off
if {%1}=={} goto USAGE
REM set /A count=1
set /A count=1
:FIRST
if %count% GTR %1 goto END
echo %count%


REM 繰り返し実行したい処理

set /A count=%count%+1
goto FIRST

:USAGE
echo 回数を指定してください

:END

コメントアウト

:if {%1}=={} goto USAGE
:set /A count=1
::FIRST
:if %count% GTR %1 goto END
:echo %count%
:
:
:REM 繰り返し実行したい処理
:
:set /A count=%count%+1
:goto FIRST
:
::USAGE
:echo 回数を指定してください
:
::END
echo comment out
結果
D:\workspace\batch_SandBox>echo comment out
comment out

OK!!



Windows コマンドプロンプト ポケットリファレンス
4774149543