我有以下 Windows 批处理文件:
@setlocal enableDelayedExpansion
@set TEXT="ABC" "DEF"
@set AGE_GROUP_LIST="[20, 30)" "[30, 40)"
@for %%A in (%AGE_GROUP_LIST%) do @(
@set TEXT=!TEXT:"=!
@echo !TEXT!
@set A=!!A:"=!
@echo %%A
)
@endlocal
当我运行它时,它输出:
ABC DEF
"[20, 30)"
ABC DEF
"[30, 40)"
但是我希望它输出删除 FOR 循环变量的双引号的位置。我该如何写才能做到这一点。
ABC DEF
[20, 30)
ABC DEF
[30, 40)
%%A
和 !A!
是完全不相关的变量,这就是为什么代码中没有发生任何事情。 %%A
是仅在 for
循环期间存在的标记,您不能像常规变量一样设置它。
但是,您可以做的是使用
~
替换修饰符,如下所示:
echo %%~A
波浪号表示删除周围的任何引号;您可以在
for /?
的输出中看到其他替换修饰符。
还值得注意的是,如果您只是将
@
作为脚本的第一行,则无需在每行开头放置 @echo off
。