l'écho de commande Windows ne peut pas l'écho d'une variable définie par l'utilisateur
-
19-09-2019 - |
Question
Qu'est-ce que je fais bousiller ma coquille CMD? Windows XP Pro, ouvrez une fenêtre cmd et faire:
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 l'écho des variables intégrées très bien. Essayé sur un autre ordinateur et qui fonctionne comme prévu
La solution
La commande set
ne prend pas d'espaces. La syntaxe correcte serait:
set tt=name
Qu'est-ce que vous avez fait dans votre exemple est une tt<space>
variable d'environnement. Avec cela à l'esprit, vous pouvez essayer ceci:
echo %tt%
et voir votre sortie.
Autres conseils
Avez-vous essayé de placer la variable sans espace entre les égaux? (Set tt = nom)
La réponse la plus upvoted ici, accepté il y a bien, affirme que:
"La commande
set
ne prend pas d'espaces."
Mais ce n'est pas correct: La variable %tt %
fonctionne réellement: Il peut être réglé et référencé. (Malgré cela 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%"
PLAINTES RÉGLÉES:
La %tt%
variable de manière intuitive attendue n'est pas définie. Mais %tt %
est mis à 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 trim()
pas:
- L'espace avant "=" est inclus à la
var_name
. - L'espace après est inclus "=" au
var_value
. - L'espace à la fin de l'
var_value
est inclus à elle.
Par contre:
- L'espace au début de la
var_name
ne sont pas inclus à elle, ce qui est plutôt normal pour les arguments de ligne de commande en général.