Windows batchで一部分的だけ一時的に
コメントアウトする方法
2021/03/21 TubeP
あ…ありのまま、今、起こった事を話すぜ!ほんとどなたかすっきりした解説をしてください。
Windows batchファイルはうp主的に難易度高いので、試行錯誤を繰り返してます。その時にお世話になったのが、一部分だけ一時的にコメントアウトする方法です。
方法
BATCHファイルの一時的にコメントアウトしたい部分(実行させたくない部分)の前の行として、
(
というカッコ一文字だけの行を追記します。同じくコメントアウトしたい部分の次の行に
)|echo "スクリプト中の ( から ) までを跳ばしました."
を挿入します。echoの後ろの文字列はなんでも構いません。
あと、挟まれた部分にどこでもいいから1回でも rem 文を入れておきます。
この技法(トリック?)を使うとコメントアウト部分を削除しなくて済むので、特にデバッグ時には便利(某言語でのifdef文の感覚ですね)。
ただし可読性は猛烈に悪いので、デバッグ中など本当に一時的な作業にしかお勧めできませんねぇ。
これについてはにわかには信じがたいと思うので、以下に動作確認用のコードをつけておきます。windows10 Version 1909で検証してます。
【00: 通常のコードブロック利用】
丸カッコで括った範囲はコードブロックと呼ばれるようです。括っただけですから、実行されるのは当然です。
echo Commands will be executed.
echo %DATE%
echo %TIME%
(
echo Executing the line. > result-00executed.txt
echo %TIME% >> result-00executed.txt
echo OK, it is good. >> result-00executed.txt
)
echo End of the %0 .
cmd /k
実行すると、同じフォルダ内にresult-00executed.txtが生成され、echo3行分の出力がされているはずです。
14:01:04.37
OK, it is good.
【01: rem文の追加】
対象のコードブロックにrem文を追加します。rem文は単なるメモですから、さきほどと同様、rem文に続くechoは 3行とも実行されるのが当然です。
【02: echo へのパイプ】
対象のコードブロックの後ろにechoを接続します。見かけ上、コードブロックの標準出力をechoに送ることになります。後ろにつないだだけなので、それより前の挙動が変わることはないような気がします。それでも、なぜかコードブロック全体の実行がキャンセルされます。この例では、result-02pipeecho.txtは生成されずに終わります。
むしろ大勢の人の混乱を招くかもしれませんねぇ(笑い)。
こんなWindows環境で仕事されてる方が大勢おられるかと思うと、頭下がります。
今回はうp主は趣味の一環でbatch環境を触りましたが、いろいろおなかいっぱいでした。
0 件のコメント:
コメントを投稿