包含字符串名称中变量的批处理字符串变量

时间:2017-04-29 00:29:56

标签: string batch-file

我有一个批处理文件,其中我有一个名为t%num%的变量,num是一个整数,t%num%=#。 我需要设置另一个名为q的变量,它等于t%num%的内容。 我尝试设置q = t%num%,以便q包含#,但它不起作用。

2 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL
SET num=5
SET t%num%=36
CALL SET q=%%t%num%%%
ECHO %q% %t5%

GOTO :EOF

使用%转义%的想法,以便解析器替换num的值,结果为set q=%t5%

答案 1 :(得分:0)

您可以(ab)为此目的使用delayed environment variable expansion

假设您定义了环境变量 t5 。以下批处理脚本会将 t5 的内容分配给变量 q

setlocal EnableDelayedExpansion
echo t5: %t5%
set num=5
set q=!t%num%!
echo q: %q%

但是,请注意,启用延迟环境变量扩展会使!不仅在批处理脚本中成为特殊字符,而且还会在环境变量内容中成为特殊字符。在执行上面的小脚本之前,请尝试为 t5 设置以下内容:

set t5=Hello World!

您会注意到“Hello World”末尾的感叹号消失了。

或尝试这个厚脸皮:

set t5=Guess what: !num!

像这样设置 t5 ,然后执行脚本,好吧......我留给你看看会发生什么:)