2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« ファイル名に%を使うと、バッチファイルにドロップしたとき、環境変数に展開される。 | トップページ | FORコマンドの出力リダイレクト »

2009年3月 6日 (金)

ファイル名に!を使うと、環境変数の遅延展開と相性が悪い。

もし、ファイル名に!があると、バッチ変数(%1など)やFOR変数(%%iなど)の展開でファイル名中の!が遅延展開されちゃいます。
これは、"~"では、エスケープできません。

これを回避するには、バッチ変数やFOR変数の展開時に遅延展開を無効にすることです。
しかし、遅延展開はSETLOCAL抜きに切り替えができません。
しかも、SETLOCALのネストには上限もあります。

また、バッチファイルの遅延展開の初期状態は呼び出し元に依存します。
なので、バッチファイルの先頭に、SETLOCAL DISABLEDELAYEDEXPANSION を必ず入れておくことを推奨します。

« ファイル名に%を使うと、バッチファイルにドロップしたとき、環境変数に展開される。 | トップページ | FORコマンドの出力リダイレクト »