gpt4 book ai didi

batch-file - 如何批量将变量值放入另一个变量名中?

转载 作者:行者123 更新时间:2023-12-02 12:40:22 28 4
gpt4 key购买 nike

假设我在批处理脚本中定义了以下变量:

set VariableFirst=value1
set VariableLast=value2

然后我在代码的另一部分设置另一个变量

set Type=First

我想根据变量%Type%的值访问%VariableFirst%%VariableLast%中的一个(类似于echo %Variable%Type%% 但这不起作用)。如何在 Windows 批处理脚本中执行此操作?

最佳答案

在您的具体情况下,这应该有效:

@ECHO OFF
SETLOCAL EnableDelayedExpansion
set VariableFirst=value1
set VariableLast=value2
set Type=First
echo !Variable%Type%!

解释如下:

关键是SETLOCAL EnableDelayedExpansion。通常你的变量是在解析时评估的。考虑这段代码:

@ECHO OFF
SET a=b
SET b=abc
ECHO %%a%%

您希望将 %a% 计算为 K,以便 ECHO %%a%% 将变为 ECHO %b% 并输出将是 abc。但这是行不通的。解析时求值意味着在不处理代码的情况下设置变量的值。 SET a=bSET b=abc 可以工作,但 ECHO %%a%% 不会,因为要知道 %a% 是 b,必须执行第一行,但是执行发生在设置变量之后。所以 %%a%% 变成 %a% 并且输出只是 %a%。

您需要做的是强制解释器在运行时评估最后一行意味着逐行执行并在到达最后一行时评估它。为此,您需要在脚本开头添加SETLOCAL EnableDelayedExpansion。现在 !...!强制解释器评估由感叹号包围的变量的当前值,考虑到该行之前对变量所做的所有更改。

现在看看这个:

@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET a=b
SET b=abc
ECHO !%a%!

现在a是b,b是abc并且!%a%!在运行时评估。因此,在这种情况下,ECHO !%a%! 在控制台知道 %a% 是 b 并且可以替换 !%a%! 的点上进行计算。与!b!这是 abc。所以输出是abc。

关于batch-file - 如何批量将变量值放入另一个变量名中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29696734/

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