La commande echo de Windows ne peut pas faire écho à une variable définie par l’utilisateur

Qu’est-ce que j’ai fait pour bousiller mon shell CMD? Windows XP Pro, ouvrez une fenêtre cmd et faites:

C:\>set tt = name C:\>set tt tt = name C:\>echo %tt% %tt% C:\>echo %time% 14:13:28.67 

La commande echo ne fonctionne pas pour une raison quelconque. Je peux faire écho aux variables intégrées. Je l’ai essayé sur un autre ordinateur et cela fonctionne comme prévu

La commande set ne prend pas d’espace. La syntaxe correcte serait:

 set tt=name 

Dans votre exemple, vous avez défini une variable d’environnement tt . Dans cet esprit, vous pouvez essayer ceci:

 echo %tt% 

et voir votre sortie.

Avez-vous essayé de définir la variable sans espace entre les égaux? (set tt = name)

La réponse la plus relevée ici, acceptée il y a longtemps, affirme que:

“La commande set ne prend pas d’espace.”

Mais ce n’est pas correct: la variable %tt % fonctionne réellement: elle peut être définie et référencée. (Malgré la confusion)

Problème reproduit:

En effet, sur mon Win7:

 C:\>set os OS=Windows_NT C:\>set tt = name C:\>set tt2= name C:\>set tt3=name C:\>set tt tt = name tt2= name tt3=name 

J’ai essayé et obtenu:

 C:\>echo "%os%" "Windows_NT" C:\>echo "%tt3%" "name" C:\>echo "%tt2%" " name" C:\>echo "%tt%" "%tt%" 

Cas résolus:

La variable attendue intuitivement %tt% n’est pas définie. Mais %tt % est défini à la place:

 C:\>echo "%tt %" " name" 

Encore plus, avec un espace à la fin de la valeur, set tt4 = name :

 C:\>echo "%tt4 %" " name " 

Conclusions:

La commande set ne sortingm() pas sortingm() :

  • L’espace avant “=” est inclus dans le var_name .
  • L’espace après “=” est inclus dans la var_value .
  • L’espace à la fin de la var_value est inclus.

D’autre part:

  • L’espace au début de var_name n’y est pas inclus, ce qui est plutôt normal pour les arguments de ligne de commande en général.