Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用字符串名称中的变量批处理字符串变量_String_Batch File - Fatal编程技术网

String 使用字符串名称中的变量批处理字符串变量

String 使用字符串名称中的变量批处理字符串变量,string,batch-file,String,Batch File,我有一个批处理文件,其中有一个名为t%num%的变量,num是一个整数,t%num%=。 我需要将另一个名为q的变量设置为t%num%的内容。 我尝试设置q=t%num%,以便q将包含a,但它不起作用 你可以为此滥用 假设您定义了一个环境变量t5。以下批处理脚本将t5的内容分配给变量q: 但是,请注意,启用延迟的环境变量扩展将使!一个特殊字符,不仅在批处理脚本中,而且在环境变量的内容中。在执行上面的小脚本之前,请尝试为t5设置以下内容: set t5=Hello World! 你会注意到Hel

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

你可以为此滥用

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

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

set t5=Hello World!
你会注意到Hello World结尾的感叹号消失了

或者试试这个厚颜无耻的东西:

set t5=Guess what: !num!
像这样设置t5,然后执行脚本,嗯。。。我让你来看看会发生什么:

@ECHO OFF SETLOCAL 设置num=5 设置t%num%=36 调用集q=%%t%num%%% 回声%q%%t5% 后藤:EOF
使用%转义%的思想,以便解析器替换num的值,并将结果设置为q=%t5%

如果可以显示代码,则调试将更容易…您使用的概念称为数组。看到它的工作原理,我理解百分号是如何工作的,但是set和call set之间有什么区别?set分配了%%t%num%%%的值,因此将分配文字值%t5%。调用集计算结果,从而计算t5的内容。
set t5=Guess what: !num!