1

私は次のバッチファイルを持っています:

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

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

set activeVar=%1

)

私の目標は動的変数を実装することなので、1つの引数でバッチファイルを開始したいと思います。バッチファイルに引数を渡さないと、activeVarがvar1に設定されます。しかし、実際には、アクティブ変数と見なされる変数を渡したいと思います。より明確にするために:

コンソールの引数を介してバッチファイルに、後のステートメントでさらに処理するためにどの変数を使用する必要があるかを伝える機会が欲しいです。だから私はこのように私のバッチを呼び出すことができます:

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

そこで、文字列var2をバッチに渡しました。ここで、最初の引数は空ではないため、バッチはelseパスにジャンプし、myactiveVarをの値に設定する必要がありますvar2。(に設定activeVarしたくない"var2"、したい"LongOption2")何かアイデアはありますか?

4

1 に答える 1

3

ここで遅延拡張を使用するか、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%%
)
于 2012-08-24T11:28:40.437 に答える