所以,我正在制作一个计算器,允许用户命名他们之前的结果,以便在将来的计算中使用它们。它的工作原理是,当您为前一个结果命名时,它会创建一个选择了名称的变量,然后将其值设置为前一个结果。它看起来像这样:
set /p equation=
::variables need to be replaced here
set /a result=%equation%
::giving a name
set /p name=
set %name%=%result%
问题是,我无法找到一种方法来获取方程中变量的值,因为方程式也是一个变量,因此每当我在%equation%
的命令中添加方程时,它只是替换它与1+%named_result%
类似。有没有办法可以用相同的方法改变方程,但是变量用它们的值替换? (set equation=%equation%
不起作用)
答案 0 :(得分:0)
for /f "tokens=1*delims==" %%a in ('set %name% 2^>nul') do if /i "%%a"=="%name%" set "result=%%b"
set %name%
以%name%
格式列出以name=value
开头的所有变量。如果未定义2>nul
,则name
会抑制错误消息。插入符号(^
)转义>
告诉cmd
>
是set
命令的一部分,而不是for
。
for /f
将set
行拆分为两部分 - 在分隔符之前和之后,name
转到%%a
和value
转到%%b
{1}}。现在set
将输出启动的任何名称 name ,以便它匹配name
,named
names
等。因此,我们需要选择名称完全匹配的输出行(因此为if
)并使匹配不区分大小写(/i
命令上的if
。
如果测试通过,请将值分配给您选择的变量。