gpt4 book ai didi

variables - BAT 文件 : variable contents as part of another variable

转载 作者:行者123 更新时间:2023-12-04 17:03:04 26 4
gpt4 key购买 nike

假设我有变量 内容为“ 123 ”和变量 b123 里面有一些文字。出于某种原因,我想使用变量 作为第二个 var 名称的一部分。像这样的东西:

SET a=123
SET b123=some_text_in_it
rem i want next line to output "some_text_in_it"
echo %b%a%%

所以我想将文本与 var 内容连接起来,并使用结果字符串作为变量名来回显该内容。上面的示例不起作用,我明白了为什么,可能我需要添加某种分组。如何做到这一点,最好在一行中?

最佳答案

有两种常见的方法CALLDelayedExpansion

setlocal EnableDelayedExpansion
SET a=123
SET b123=some_text_in_it
rem i want next line to output "some_text_in_it"
call echo %%b%a%%%
echo !b%a%!
CALL变体使用了这样一个事实,即调用将第二次重新解析该行,第一次只有 %a%将扩大和双 %%将减少为单个 % call echo %b123%在第二步中 %b123%将扩大。
但是 CALL技术很慢而且不是很安全,所以 DelayedExpansion 应该是首选。

DelayedExpansion 的工作原理是感叹号在比百分比的扩展更晚的解析器阶段扩展。
这也是为什么延迟扩张更安全的原因。

编辑:包含数字的数组的方法
如果您正在处理只包含数字的数组,您还可以使用 set /a访问它们。
这比 FOR容易多了或 CALL技术,它也适用于块。
setlocal EnableDelayedExpansion
set arr[1]=17
set arr[2]=35
set arr[3]=77
(
set idx=2
set /a val=arr[!idx!]
echo !var!
)

关于variables - BAT 文件 : variable contents as part of another variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9700256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com