batch-file - 批处理 - 评估名称中带有参数的动态变量

标签 batch-file cmd dynamic-variables

我正在编写一个批处理库,该库不能是本地的,以便外部批处理文件可以从单个定义的位置调用函数。

这要求调用批处理文件必须为其中命名的变量传递“唯一”标识符。 (即传入 %1 的 Application1)。

然后我希望动态命名变量,例如:

set %1_Timer=Hello

这很有效,除了我需要能够评估所述动态变量,但找不到允许我评估这些基于参数的动态变量的解决方案。

我尝试过以下解决方案:

echo %1_Timer%
echo %1_Timer
echo %%1_Timer%%
echo %%1_Timer%
Call echo %%1%_Timer%

我无法使用未动态命名的变量,因为使用此库的其他脚本可能会更改该非动态变量,从而更改其他脚本的输出。

最佳答案

您想要使用延迟扩展。

@echo off
setlocal enabledelayedexpansion

echo !%1_Timer!

也可以使用call%%标志(call echo %%%1_Timer%%,但一般延迟扩展会比较多有用。此外,如果您曾经设置或修改代码块内的变量(例如 forif),则这是强制性的。

关于batch-file - 批处理 - 评估名称中带有参数的动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29528196/

相关文章:

windows - bat文件不会暂停执行

windows - 如何获取映射网络驱动器的驱动器号

javascript - i = 1 如何访问channel_number_i?

variable-assignment - 动态变量、CALLERS、标量和赋值

bash - 批处理文件/bash 脚本验证器

batch-file - 在命令行/批处理文件中运行 Powershell 命令

windows - 从 Windows 批处理文件设置系统环境变量?

python cmd模块捕获异常后返回提示

c++ - C++动态添加变量

java - 为 Java 设置 Notepad++