くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

【BAT】BATファイルでヒアドキュメントを実現するBAT

概要

BATファイルでヒアドキュメントっぽいことを実現します。
これを使えばいろいろと便利になりそうです。

※実装には、やんごとなき理由でJScriptを使用しています。
(DOS-BAT の for /f で回すと、空行が間引かれてしまうというアレの所為)

使い方

BATファイル内の、到達できない場所(exitやgoto :eofの後ろなど)にヒアドキュメントっぽいもの(ニアドキュメント)を記述します。
ニアドキュメントの範囲は、任意の文字に「>」(始端)と「<」(終端)を付与し指定します。

rem 始端・終端をあらわす文字列として「HERE」を使用する場合
HERE>
1
2
3
<HERE

実際に出力する際は、「NearDoc.bat」をCallし、

  • 第一引数 … 自BATのパス
  • 第二引数 … ヒアドキュメントの区切り文字

を渡します。

Call NearDoc.bat "%~0" HERE

標準出力に、「HERE>」~「<HERE」の間に記述されている内容が出力されます。

1
2
3


標準出力に出るので、パイプで繋いでsortやらfindstrやらでごにょごにょできます。
また、区切り文字さえ被らなければ、ニアドキュメントは複数記述可能です。
(テストコードでも複数を使用しています)

ソースコード

いつもと同様、上が話題のコードで、下が簡単なテストコードです。

[NearDoc.bat]


[NearDocTest.bat] ※テストコード