キミは、バッチファイル(*.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