web-dev-qa-db-fra.com

comment concaténer deux variables dans un script batch?

Je veux faire quelque chose comme ça dans un script batch. Veuillez me faire savoir si c'est la manière appropriée ou possible de le faire ou d'une autre manière?

set var1=A

set var2=B

set AB=hi

set newvar=%var1%%var2%

echo %newvar%  

Cela devrait produire la valeur "hi".

14
Kantesh

L'activation de l'expansion variable retardée résout votre problème, le script produit "salut":

setlocal EnableDelayedExpansion

set var1=A
set var2=B

set AB=hi

set newvar=!%var1%%var2%!

echo %newvar%
22
Sergey Podobry

Vous pouvez le faire sans setlocal, grâce à la commande setlocal, la variable ne survivra pas à un endlocal car elle a été créée dans setlocal. De cette façon, la variable sera définie de la bonne façon.

Pour ce faire, utilisez ce code:

set var1=A

set var2=B

set AB=hi

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

echo %newvar% 

Remarque: Vous DEVEZ utilisez call avant de définir la variable ou cela ne fonctionnera pas.

7
Mihail Mojsoski

Le chemin est correct, mais peut être amélioré un peu avec la syntaxe d'ensemble étendue.

set "var=xyz"

Définit la var au contenu jusqu'au dernier guillemet, cela garantit qu'aucun espace "caché" n'est ajouté.

Votre code ressemblerait à

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