2017-10-06 3 views
0

Hier ist die Batch-Skript arbeite ich an:Batch - „geh zu diesem Zeitpunkt war unerwartet“

@echo off 

:programBEGIN 
set FILE=R3D-%input1%.txt 
mode con:cols=24 lines=25 
color F 

set /p input1=}} INPUT: 
cls 
if %input1%=="" goto ERR1 
goto programLIST 

:programLIST 
echo Hello 

:ERR1 
echo Test 
pause 

Jedes Mal, wenn ich versuche, die bat-Datei und Eingabe keinen Wert zu laufen, es mit einem schnellen prompt schließt von "goto war zu der Zeit unerwartet"

Ist meine Formatierung der if-Anweisung korrekt, oder ist das der Grund, warum sie schließt?

+0

Mögliches Duplikat von [Warum wird die Verarbeitung meiner Batch-Datei mit einem Syntaxfehler beim String-Vergleich mit IF-Befehl beendet?] (Https://stackoverflow.com/questions/34690602/why-is-processing-of-my- batch-file-exited-with-a-syntax-error-on-string-comparsi) – Mofi

Antwort

2

Denn wenn Eingabe nicht das Skript definiert ist, sieht wie folgt aus:

if =="" goto ERR1 

, die einen Syntaxfehler.

Versuchen wie folgt aus:

if "%input1%"=="" goto ERR1 
0

Statt mit, dass diese if-Anweisung, versuchen Sie stattdessen:

IF DEFINED "%input1%" goto ERR1 

Wenn Sie die normale Anweisung, wenn verwenden müssen, können Sie dies versuchen:

IF "%input1%"=="" goto ERR1 

nur um sicher zu gehen. Ansonsten sehe ich nicht, wo das Problem herkommen würde.

+1

Sollte 'falls definiert sein input1 wird ERR1' – DodgyCodeException

+1

Ihre' if defined' ist falsch. Es sollte * sein, wenn nicht definiert Input1 ... '. Wie gesagt, würde das envvar '" "' abgefragt werden (mit leerem 'input1') oder wenn' input1' 'fred' enthielte, dann würde' fred' (einschließlich der Anführungszeichen) abgefragt werden. Der Versuch, eine zitierte envvar festzulegen, führt zu einem Wertbericht für diesen Variablennamen und zu keiner Änderung der Variablen. (hmm ... das ist eine Untersuchung ...) – Magoo

Verwandte Themen