Windows-Echo-Befehl kann nicht vom Benutzer eingestellten Variable Echo
-
19-09-2019 - |
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
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.