如何在Windows批处理FOR循环中移除变量内的双引号
解决Windows批处理中FOR循环变量移除双引号的问题
你当前代码里尝试移除%%A引号的写法!!A:"=!是无效的,因为没有正确将循环变量赋值给普通变量并利用延迟扩展处理。这里有两种简洁的解决方法:
方法一:利用延迟扩展替换引号
先把循环变量赋值给普通变量,再通过延迟扩展移除引号:
@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 "CURRENT_GROUP=%%A" @set "CURRENT_GROUP=!CURRENT_GROUP:"=!" @echo !CURRENT_GROUP! ) @endlocal
方法二:使用FOR变量的~修饰符(更简洁)
FOR变量自带的~修饰符可以直接移除变量两端的引号,无需额外变量操作:
@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! @echo %%~A ) @endlocal
两种方法运行后都会输出你期望的结果:
ABC DEF [20, 30) ABC DEF [30, 40)
内容的提问来源于stack exchange,提问作者mak
相关产品推荐
相关产品推荐

