我有以下批处理文件:
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"
)
有什么想法吗?
答案 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%%
)