Batch file 如何在批处理脚本中引用变量?

Batch file 如何在批处理脚本中引用变量?,batch-file,cmd,Batch File,Cmd,设想一个名为batch.bat的脚本,调用方式如下: batch.bat Two 该脚本包含: set One=1 set Two=2 set Three=3 set Choice=%1 echo %Choice% 但是我想回显2,而不是2 我可以用什么优雅的方式来做那件事?我考虑过如果%Choice%=One,等等。但是我的实际脚本比提供的示例要复杂一些 编辑:我也试过: set percent=%% echo %percent%%Choice%%percent% 但它不会将结果表达

设想一个名为batch.bat的脚本,调用方式如下:

batch.bat Two
该脚本包含:

set One=1
set Two=2
set Three=3

set Choice=%1

echo %Choice%
但是我想回显
2
,而不是
2

我可以用什么优雅的方式来做那件事?我考虑过
如果%Choice%=One,等等。
但是我的实际脚本比提供的示例要复杂一些

编辑:我也试过:

set percent=%%
echo %percent%%Choice%%percent%

但它不会将结果表达式视为变量引用。

好的,我已经解决了:

关键是使用“设置延迟扩展”技巧。 还有一个技巧是使用“呼叫集”而不是上面提到的,但我想如果我使用它,我后面的下一个家伙将不知道我在做什么,可能会遇到麻烦

脚本可以通过添加来修复!!围绕我们要强制输入变量名的引用,如下所示:

@echo off
setlocal EnableDelayedExpansion

set One=1
set Two=2
set Three=3

set Choice=!%1!

echo %Choice%

好吧,我想起来了:

关键是使用“设置延迟扩展”技巧。 还有一个技巧是使用“呼叫集”而不是上面提到的,但我想如果我使用它,我后面的下一个家伙将不知道我在做什么,可能会遇到麻烦

脚本可以通过添加来修复!!围绕我们要强制输入变量名的引用,如下所示:

@echo off
setlocal EnableDelayedExpansion

set One=1
set Two=2
set Three=3

set Choice=!%1!

echo %Choice%
我个人更喜欢延迟扩展方法,但有时有理由寻找替代方法

我个人更喜欢延迟扩展方法,但有时有理由寻找替代方法