Di Windows echo comando non può eco una variabile impostata dall'utente
-
19-09-2019 - |
Domanda
Quello che ho fatto per rovinare il mio guscio CMD? Windows XP Pro, aprire una finestra cmd e fare:
C:\>set tt = name
C:\>set tt
tt = name
C:\>echo %tt%
%tt%
C:\>echo %time%
14:13:28.67
Il comando echo non funziona per qualche motivo. Posso eco le variabili built-in più che bene. Provato su un altro computer e che funziona come previsto
Soluzione
Il comando set
non prende spazi. La sintassi corretta sarebbe:
set tt=name
Quello che hai fatto nel tuo esempio è impostato un tt<space>
variabile d'ambiente. Con questo in mente, si può provare questo:
echo %tt%
e vedere l'output.
Altri suggerimenti
Hai provato impostando la variabile senza spazio tra gli eguali? (Set di TT = nome)
La risposta più upvoted qui, accolto molto fa, afferma che:
"Il comando
set
non prende spazi".
Ma non è corretto: la variabile %tt %
funziona realmente: Può essere impostato e riferimento. (Nonostante è di confusione.)
Problema riprodotti:
In effetti, sul mio 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
ho provato ed ho ottenuto:
C:\>echo "%os%"
"Windows_NT"
C:\>echo "%tt3%"
"name"
C:\>echo "%tt2%"
" name"
C:\>echo "%tt%"
"%tt%"
casi risolti:
Il %tt%
variabile intuitivamente previsto non è impostata. Ma %tt %
è impostato invece:
C:\>echo "%tt %"
" name"
Ancora di più, con uno spazio al fine del valore, set tt4 = name
:
C:\>echo "%tt4 %"
" name "
Conclusioni:
Il comando set
non trim()
:
- Lo spazio prima di "=" è incluso al
var_name
. - Lo spazio dopo "=" è incluso al
var_value
. - Lo spazio al termine della
var_value
è incluso ad esso.
D'altra parte:
- Lo spazio all'inizio della
var_name
non è incluso ad esso, che è piuttosto normale per gli argomenti della riga di comando in generale.