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

È stato utile?

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.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top