web-dev-qa-db-ja.com

バッチスクリプトで2つの変数をどのように連結しますか?

バッチスクリプトでこのようなことをしたいです。これが適切な方法であるか、可能な方法であるか、または他の方法であるかを教えてください

set var1=A

set var2=B

set AB=hi

set newvar=%var1%%var2%

echo %newvar%  

これにより、値「hi」が生成されます。

14
Kantesh

遅延変数展開を有効にすると問題が解決し、スクリプトは「hi」を生成します。

setlocal EnableDelayedExpansion

set var1=A
set var2=B

set AB=hi

set newvar=!%var1%%var2%!

echo %newvar%
22
Sergey Podobry

setlocalコマンドはsetlocalで作成されているため、endlocalコマンドにより、変数はsetlocalを生き残れません。このようにして、変数は正しい方法で定義されます。

これを行うには、次のコードを使用します。

set var1=A

set var2=B

set AB=hi

call set newvar=%%%var1%%var2%%%

echo %newvar% 

注:[〜#〜] must [〜#〜]変数を設定する前にcallを使用しないと、機能しません。

7
Mihail Mojsoski

方法は正しいですが、拡張セット構文を使用して少し改善できます。

set "var=xyz"

最後の引用符までコンテンツにvarを設定します。これにより、「非表示」スペースが追加されないことが保証されます。

あなたのコードは次のようになります

set "var1=A"
set "var2=B"
set "AB=hi"
set "newvar=%var1%%var2%"
echo %newvar% is the concat of var1 and var2
echo !%newvar%! is the indirect content of newvar
2
jeb