我一直尝试打印文件名,其中一些文件名中包含“!”。我目前的输出是打印不带“!”的文件名。
我尝试在循环内启用和禁用延迟扩展,但这似乎会引发一些错误。
错误:“已达到最大 setlocal 递归级别。”
我的批次的片段:
SETLOCAL EnableDelayedExpansion
FOR /f "tokens=*" %%A IN ('dir /B "%covers_dump_full_path%" ^| findstr /V /I /C:".html"') DO (
SET "game_name=%%A"
FOR %%F IN ("%%A") DO SET "game_name_no_ext=%%~NF"
if !current_column! == 1 (
ECHO ^<tr^>>> "%game_html%"
)
REM -------- THIS IS THE LINE THAT IS CAUSING ME ISSUES --------
ECHO ^<td align="center"^> ^<img src="!game_name!" width=300 height=250^> ^<br^> ^<b^> !game_name_no_ext! ^<br^> ^</b^> ^</td^>>> "%game_html%"
if !current_column! == !max_columns! (
ECHO ^</tr^>>> "%game_html%"
SET /a current_column=0
)
SET /a current_column=!current_column!+1
)
那么,即使文件名中包含“!”,我怎样才能打印文件名呢?
我曾想过使用混合脚本和 VBScript 来解决这个问题。但我试图将其制作成一个完整的纯 CMD 批处理脚本。除非没有任何解决方案,否则我不想重写我的批处理以包含 VBScript。