2017-04-20 84 views
0

想象一個名叫batch.bat腳本,調用是這樣的:如何引用批處理腳本中的變量?

batch.bat Two 

的腳本包含:

set One=1 
set Two=2 
set Three=3 

set Choice=%1 

echo %Choice% 

但我想呼應2,不Two

我可以用什麼樣的優雅方式來做到這一點?我想過if %Choice%=One, etc.,但我的實際腳本比提供的示例稍微複雜一些。

編輯:我也嘗試:

set percent=%% 
echo %percent%%Choice%%percent% 

但它不會把得到的表達式作爲變量引用。

回答

4
@echo off 
setlocal EnableDelayedExpansion 
set one=1 
set c=%1 
echo delayed expansion and variable: !%c%! 
echo delayed expansion and paramr: !%1! 
call echo using call and variable: %%%c%%% 
call echo using call and param:  %%%1%% 

我個人更傾向於延遲擴展方法,但有時也有原因,尋找一種替代。

1

OK,我已經想通了:

的關鍵是使用「設置延遲擴張」的把戲。 還有一個使用「呼叫集」而不是上述的技巧,但我認爲如果我使用它,下一個在我之後的人將不知道我想做什麼,並可能陷入困境。

該腳本可以通過添加修復!各地,我們要強行進入變量名,像這樣的參考:

@echo off 
setlocal EnableDelayedExpansion 

set One=1 
set Two=2 
set Three=3 

set Choice=!%1! 

echo %Choice% 
相關問題