在Windows批处理中使用动态变量
我有以下批处理文件:在Windows批处理中使用动态变量,windows,variables,dynamic,batch-file,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。但实际上我想传递一个变量,这个变量作为活动变量。更清楚地说: 我希望有机会通过控制台上
set var1=LongOption1
set var2=Longoption2
set var3=LongOption3
if "%1" == "" (set activeVar=%var1%) else (
set activeVar=%1
)
我的目标是实现一个动态变量,所以我想用一个参数启动批处理文件。如果我不向批处理文件传递参数,它将把activeVar设置为var1。但实际上我想传递一个变量,这个变量作为活动变量。更清楚地说:
我希望有机会通过控制台上的一个参数告诉我的批处理文件,在以后的语句中,它应该使用哪个var进行进一步处理。
所以我可以这样称呼我的批次:
cmd --> ..../batch.bat var2
因此,我将字符串var2
传递给我的批处理。现在,由于第一个参数不是空的,批处理应该跳转到else路径,并将myactiveVar
设置为var2
的值。(我不想将activeVar
设置为“var2”
,我希望它是“LongOption2”
)
有什么想法吗?您可以在这里使用延迟扩展,或者拨打
电话
set var1=LongOption1
set var2=Longoption2
set var3=LongOption3
setlocal EnableDelayedExpansion
if "%1" == "" (
set activeVar=%var1%
) else (
set activeVar=!%1!
)
或使用呼叫
set var1=LongOption1
set var2=Longoption2
set var3=LongOption3
if "%1" == "" (
set activeVar=%var1%
) else (
CALL set activeVar=%%%1%%
)
有什么想法吗???问题是什么?