2012-08-24 69 views
1

動態變量我有以下批處理文件:使用Windows批量

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

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

set activeVar=%1 

) 

我的目標是實現一個動態變量,所以我要開始我的批處理文件與一個參數。如果我沒有將參數傳遞給我的批處理文件,它應該將我的activeVar設置爲var1。但實際上我想傳遞一個變量作爲活動變量。爲了更清楚:

我想有機會通過控制檯上的參數告訴我的批處理文件,它應該在後面的語句中進一步處理。 所以,我可以打電話給我一批這樣的:

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

所以我傳遞的字符串var2到我的批處理。現在,因爲第一個參數不是空的,批處理應該跳到else路徑並將我的activeVar設置爲值var2。 (我不想將activeVar設置爲"var2",我希望它是"LongOption2") 任何想法?

+0

任何想法???什麼是問題? – Abhineet

回答

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%% 
) 
+0

Perfekt,謝謝 – Metalhead89