删除 Windows 批处理 FOR 循环变量中的双引号

问题描述 投票:0回答:1

我有以下 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)
windows batch-file
1个回答
0
投票

%%A
!A!
是完全不相关的变量,这就是为什么代码中没有发生任何事情。
%%A
是仅在
for
循环期间存在的标记,您不能像常规变量一样设置它。

但是,您可以做的是使用

~
替换修饰符,如下所示:

echo      %%~A

波浪号表示删除周围的任何引号;您可以在

for /?
的输出中看到其他替换修饰符。

还值得注意的是,如果您只是将

@
作为脚本的第一行,则无需在每行开头放置
@echo off

© www.soinside.com 2019 - 2024. All rights reserved.