我有一个批处理文件,其中我有一个名为t%num%的变量,num是一个整数,t%num%=#。 我需要设置另一个名为q的变量,它等于t%num%的内容。 我尝试设置q = t%num%,以便q包含#,但它不起作用。
答案 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 ,然后执行脚本,好吧......我留给你看看会发生什么:)