在Windows批处理中使用动态变量

时间:2012-08-24 10:33:15

标签: windows variables dynamic batch-file

我有以下批处理文件:

set var1=LongOption1
set var2=Longoption2
set var3=LongOption3

if "%1" == "" (set activeVar=%var1%) else (

set activeVar=%1

)

我的目标是实现一个动态变量,所以我想用一个参数启动我的批处理文件。如果我没有将参数传递给我的批处理文件,它应该将我的activeVar设置为var1。但实际上我想传递一个被视为活动变量的变量。为了更清楚:

我希望有机会通过控制台上的参数告诉我的批处理文件,它应该在以后的语句中进行进一步处理。 所以我可以像这样打电话给我的批处理:

cmd --> ..../batch.bat var2 

所以我将String var2传递给了我的批处理。现在,因为第一个参数不为空,批处理应该跳转到else路径并将activeVar设置为值var2。 (我不想将activeVar设置为"var2",我希望它为"LongOption2") 有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可以在此处使用延迟展开或call

set var1=LongOption1
set var2=Longoption2
set var3=LongOption3
setlocal EnableDelayedExpansion

if "%1" == "" (
  set activeVar=%var1%
) else (
  set activeVar=!%1!
)

或使用CALL

set var1=LongOption1
set var2=Longoption2
set var3=LongOption3

if "%1" == "" (
  set activeVar=%var1%
) else (
  CALL set activeVar=%%%1%%
)