2016-05-07 11 views
1

Ich bin der Besitzer eines Minecraft-Servers und arbeite gerade an einer Möglichkeit, ein Auto-Setup-Skript zu erstellen, damit andere Server einfacher ausführen können. Ich habe alles fertig, aber nachdem ich es getestet habe, wirft dieser Code einen "Die Syntax des Befehls ist falsch" -Fehler. Hier ist der Code:Batchdatei - Die Syntax des Befehls ist falsch

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 
ECHO Welcome to the startup of your new Minecraft server^^! 
ECHO Upon completion of the first start, please exit the program and run "start.bat". 
ECHO When you are ready, press any key. 
PAUSE>NUL 
SET /p "hasrun" = < "%~dp0\hasrun.txt" 

:Run 
IF "!hasrun!" == "0" (
    ECHO "1" >> "%~dp0\hasrun.txt" 
    java -Xms1024M -Xmx1024M -jar minecraft_server.jar nogui 
) ELSE (
    ECHO This is not your first run^^! Use "start.bat" instead^^! 
    PAUSE 
) 

Der Fehler scheint mit ECHO "1" >> "%~dp0\hasrun.txt" an der Leitung auftreten. Es ist eine Weile her, seit ich zum letzten Mal etwas im Batch geschrieben habe, also ist es wahrscheinlich etwas Offensichtliches. Der genaue Ausgang (mit echo off) ist:

Welcome to the startup of your new Minecraft server! 
Upon completion of the first start, please exit the program and run "start.bat". 

When you are ready, press any key. 

Nach Drücken einer Taste die PAUSE passieren, heißt es:

The syntax of the command is incorrect. 
This is not your first run! Use "start.bat" instead! 
Press any key to continue... 

Auch der Gehalt an hasrun.txt ist einfach eine Null. ("0" ohne die Anführungszeichen)

+0

rollte ich deine Bearbeitung zurück. Sie können nicht immer neue Fragen zu derselben Frage hinzufügen, nachdem Sie mit dem Empfang von Antworten begonnen haben. Wenn Sie jetzt ein neues Problem haben, ist dies eine neue Frage, die Sie als eine neue Frage veröffentlichen müssen. Sie können jederzeit eine Verknüpfung zu dieser Frage in der neuen als Referenz angeben. –

+0

Ist der Inhalt von '! Hasrun!' Vorher gesetzt? Wenn dies der Fall ist, negiere die Zeile "Wenn nicht vorhanden ..." aus meiner Antwort und ersetze '"! Hasrun! "==" 0 "' mit '"! Hasrun! "==" 0 "'. – Bloodied

+0

@KenWhite Ah, okay, Entschuldigung. Ich bin immer noch ziemlich neu, um Fragen auf dieser Seite zu stellen und es ist eine Weile her, seit ich einen gefragt habe. –

Antwort

2

Ihr Problem ist die Variable !hasrun!. Ihre Methode, die Variable zu setzen, macht eine leere oder ungültige Variable, und wenn die Datei leer ist, entspricht !hasrun! nichts, was die Schleife for ausfällt.


@ECHO OFF 
SETLOCAL EnableDelayedExpansion 
ECHO Welcome to the startup of your new Minecraft server^^! 
ECHO Upon completion of the first start, please exit the program and run "start.bat". 
ECHO When you are ready, press any key. 
PAUSE>NUL 
:: Default variable set, or the for loops fails because "" does not equal "0". 
if not exist "%~dp0\hasrun.txt" echo 0 >%~dp0\hasrun.txt 
:: Set the file to a variable. 
SET /p hasrun=<%~dp0\hasrun.txt 

:Run 
:: Space after "0 " appended because 0> refers to a debugging echo. 
IF "!hasrun!"=="0 " (
    ECHO 1>"%~dp0\hasrun.txt" 
    java -Xms1024M -Xmx1024M -jar minecraft_server.jar nogui 
    pause 
) ELSE (
    ECHO This is not your first run^^! Use "start.bat" instead^^! 
    PAUSE 
) 
del %~dp0\hasrun.txt 
+0

Danke für die Antwort! Testen Sie es jetzt. –

+0

Das funktioniert! Aber die Datei überspringt auch die IF-Anweisung, als ob 'hasrun.txt' etwas anderem als null entspricht. Auch hier ist es offensichtlich, aber ich bin mir nicht sicher. –

+0

Oh nein, ich habe es vermasselt, ich habe es schlecht gemacht. – Bloodied

Verwandte Themen