Supportnet / Forum / BS-Sonstige
Syntaxfehler bei Ausführung der Batch-Datei
Frage
Ich möchte durch eine Batchdatei u.a. abfragen, ob beim Aufruf der Stapelverarbeitungsdatei auch der Computername als Argument mit übergeben wurde. Wenn nur der Name der Batch-Datei angegeben wurde, ohne dass ein Computername mit angegeben wird, soll der Benutzer eine Rückmeldung erhalten. Dazu ist in der .bat-Datei folgendes definiert:
[b]
set computername=%1
if %computername%=="" goto syntax
..
..
..
..
:syntax
echo Bitte geben Sie beim Aufruf der Batch-Datei zusätzlich
echo den Computernamen als Argument mit an.
echo Syntax: Setup.bat ^Computername^
[/b]
Wird kein Computername mit angegeben, meldet der Kommandointerpreter derzeit einen "Syntaxfehler" zurück. Wo liegt der Fehler?
[b]Frage 2:[/b]
Wie kann ich z.B. Anführungsstriche oder spitze Klammern in einer Echo-Meldung [b]ALS TEXT[/b] anzeigen lassen?
Danke für Eure Hilfe.
Gruß
Oli
Antwort 1 von wiserWords
zu Frage 1:
probier mal
if "%computername%"=="" goto syntax
probier mal
if "%computername%"=="" goto syntax
Antwort 2 von maneich
Hallo,
zunächst einmal in Zeile 2 muß es heisen if "%computername%"=="" goto syntax. Die fehlenden Anführungszeichen bei computername verursachen den Fehler.
Wenn %1 bzw. Computername leer ist und du nach "" abfragst kann es nur gleich sein, wenn Du %1 bzw. Computername mit "" ergänzt. Aber warum fragst Du nicht gleich %1 ab mit:
if "%1"=="" goto syntax (und dann weiter mit)
set computername=%1.
Deine 2. Frage verstehe ich nicht ganz. die Anführungszeichen mußt Du natürlich mit angeben z.B. mit
echo dies sind Anführungszeichen """";
diese Zeichen werden dann auch ausgegeben.
MfG maneich
zunächst einmal in Zeile 2 muß es heisen if "%computername%"=="" goto syntax. Die fehlenden Anführungszeichen bei computername verursachen den Fehler.
Wenn %1 bzw. Computername leer ist und du nach "" abfragst kann es nur gleich sein, wenn Du %1 bzw. Computername mit "" ergänzt. Aber warum fragst Du nicht gleich %1 ab mit:
if "%1"=="" goto syntax (und dann weiter mit)
set computername=%1.
Deine 2. Frage verstehe ich nicht ganz. die Anführungszeichen mußt Du natürlich mit angeben z.B. mit
echo dies sind Anführungszeichen """";
diese Zeichen werden dann auch ausgegeben.
MfG maneich
Antwort 3 von _gau_
Du mußt ein Caret-Zeichen (^) verwenden, um mit dem echo-Befehl Umleitungs- (^< und ^>) oder Pipe-Zeichen (^|) auszugeben.
z.B. echo ^<Meldungstext^>
[gau]
z.B. echo ^<Meldungstext^>
[gau]
Antwort 4 von _gau_
Und für's Caret-Zeichen selbst einfach zweimal Caret.
echo ^^
[gau]
echo ^^
[gau]
Antwort 5 von _gau_
Ich war vielleicht etwas voreilig...
Der "Trick" mit den Caret-Zeichen funktioniert nur beim Kommandointerpreter CMD.EXE von W2K/XP. Im richtigen MS-DOS also nicht.
[gau]
Der "Trick" mit den Caret-Zeichen funktioniert nur beim Kommandointerpreter CMD.EXE von W2K/XP. Im richtigen MS-DOS also nicht.
[gau]

