Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows批处理中使用动态变量_Windows_Variables_Dynamic_Batch File - Fatal编程技术网

在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路径,并将my
activeVar
设置为
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%%
)

有什么想法吗???问题是什么?