« IEのuserAgent文字列が肥大化する。 | トップページ | エクスプローラで、MP4ファイルのサムネールを表示する。 »

2008年7月28日 (月)

バッチファイルで、改行をエスケープすると継続行の行頭文字もエスケープされる。

改行をエスケープして、行を継続すると、継続行の行頭の文字、例えば、次の例では、二重引用符もエスケープされます。これは「仕様」です。

for %%1 in (a) do ^
"hoge hoge.cmd" ^
%%1

そのため、"hoge hoge.cmd"が実行されず、hogeを実行しようとします。

さらに、行頭の二重引用符がエスケープされたため、行末の^が2番目の二重引用符でエスケープされます。

そのため、3行目が継続行になりません。

回避策は、

(甲)
for %%1 in (a) do "hoge hoge.cmd" ^
%%1

(乙)
for %%1 in (a) do (
"hoge hoge.cmd" ^
%%1
)

(丙)
for %%1 in (a) do ^
call "hoge hoge.cmd" ^
%%1

(丁)
for %%1 in (a) do ^
h"oge hoge.cmd" ^
%%1

« IEのuserAgent文字列が肥大化する。 | トップページ | エクスプローラで、MP4ファイルのサムネールを表示する。 »