バッチでバッチを作成

バッチファイルの数は少なければ少ないほど良いので、バッチ内で子バッチを作成して、その子バッチを実行するような手法をよく用いる。
具体的にはecho文を用いて子バッチファイルにリダイレクトする。この際、|(バーチカルバー)や<>といった大小記号は^(キャレット)を前につけることによって、echo文の中での意味をキャンセルできる。また%は%%とすることで同様にecho文の中での意味をキャンセルできる。

@echo off

rem 子バッチファイル名の定義
set childbatfile=child.bat

rem 子バッチファイルへの手続き書込
echo set outfile=outfile.txt > %childbatfile%
echo echo destroy them all ^>^> %%outfile%% >> %childbatfile%

rem 子バッチファイルの実行
%childbatfile%

@echo on

上記バッチを実行すると、child.batというファイルが作成されて、実行される。中身はこんな感じ。

set outfile=outfile.txt 
echo destroy them all >> %outfile% 

結果としてoutfile.txtが作成される。中身はこんな感じ。

destroy them all