1 votes

Comment afficher une variable d'environnement dans une variable en DOS

Je ne suis pas certain que cette question soit valable, mais je suis en train de chercher une solution à mon problème comme ci-dessous :

set var1=ABC
set otherevars=C:\temp2
set %var1%dfts=C:\temp\test

Tout fonctionne bien jusqu'à la ligne ci-dessus, mais pouvons-nous obtenir la valeur ci-dessous :

Je cherche à définir une autre variable d'environnement comme ci-dessous :

echo set projdeflts=%var1%dfts;%otherevars%
                    ^^^^^^^^^^

Je m'attends à projdeflts en tant que C:\temp\test;C:\temp2

1voto

LPChip Points 53736

Votre problème réside dans la façon dont un script cmd est analysé. Il n'est analysé qu'une seule fois et, par conséquent, lorsque vous arrivez à cette ligne :

echo set projdeflts=%var1%dfts;%otherevars%

%var1% est évalué tel quel, ce qui donne ABCdfts. Vous ne pouvez pas imbriquer ces recherches. Mais étant donné que toutes les informations sont déjà dans le script lui-même, vous pouvez simplement appeler le résultat. Par exemple :

echo set projdeflts=%ABCdfts%;%otherevars%

Si vous voulez avoir le contrôle de l'assignation de variables imbriquées, vous devrez passer à un langage de script plus puissant, tel que Powershell.

Ensuite, vous pouvez simplement faire :

$var = @{"var1" = "ABC"}
$var.var1 #(ce qui affiche ABC)

Ou simplement

$var1 = "ABC"
$var1 #(ce qui affiche ABC)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X