CMD.EXEのバッチで詰まった

以下のバッチではファイル名に"!"が含まれていてもそれが無視されるため生成物を開くとエラーが起きる。

setlocal enabledelayexpansion

set OUTPUT=list.cue
set /a c=0

for %%I in (*.wav) do (
 set /a c+=1
 echo FILE "%%~I" WAVE >> %OUTPUT%
 set LABEL=!c!
 if !c! lss 10 set LABEL=0!LABEL!
 echo   TRACK !LABEL! AUDIO >> %OUTPUT%
 echo     INDEX 01 00:00:00 >> %OUTPUT%
)
endlocal

どうやら遅延展開が有効な場合、構文解析の段階で"!"について処理が行われるようだが環境変数中の"!"ってどうやってエスケープするんだ?エスケープ自体は"^"を直前につけてやることで行うようだがどうしろと。
カウントを遅延展開でやっている都合上、遅延展開は無効にできないしなぁ。