Frage

Was habe ich meine CMD-Shell vermasseln? Windows XP Pro, öffnen Sie ein CMD-Fenster und zu tun:

C:\>set tt = name

C:\>set tt
tt = name

C:\>echo %tt%
%tt%

C:\>echo %time%
14:13:28.67

Der Echo-Befehl funktioniert nicht aus irgendeinem Grunde. Ich kann ganz gut die eingebauten Variablen Echo. Versuchte es auf einem anderen Computer und das funktioniert wie erwartet

War es hilfreich?

Lösung

Das set Kommando übernimmt keine Leerzeichen. Die richtige Syntax wäre:

set tt=name

Was Sie in Ihrem Beispiel getan haben, ist eine Umgebungsvariable tt<space> gesetzt. Mit dem im Verstand, können Sie versuchen, diese:

echo %tt%

und sehen Sie Ihre Ausgabe.

Andere Tipps

Haben Sie versucht, die Variable ohne Leerzeichen zwischen dem Gleichheits Einstellung? (Set tt = name)

Die meisten upvoted Antwort hier angenommen vor weit, behauptet, dass:

  

"Der set Befehl Räume nicht statt."

Aber das ist nicht korrekt: Die %tt % Variable tatsächlich funktioniert: Es kann eingestellt werden und verwiesen. (Obwohl es ist verwirrend.)

Problem reproduziert:

Ja, auf meinem 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

Ich habe versucht und bekam:

C:\>echo "%os%"
"Windows_NT"

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

Gelöste Fälle:

Die intuitiv erwartet Variable %tt% nicht gesetzt ist. Aber %tt % gesetzt statt:

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

Noch mehr, mit einem Raum am Ende des Wertes, set tt4 = name :

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

Schlussfolgerungen:

Der set Befehl nicht trim():

  • Der Raum vor dem "=" in den var_name enthalten ist.
  • Der Raum nach "=" in den var_value enthalten ist.
  • Der Raum am Ende des var_value ist es enthält.

Auf der anderen Seite:

  • Der Raum am Anfang des var_name ist nicht darin enthalten, die für die Befehlszeilenargumente in der Regel eher normal ist.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top