2017-01-12 3 views
0

Der folgende Code den folgenden Fehler zurückgibt:Syntaxfehler in der Batch-Datei

The syntax of the command is incorrect." 

Aber ich habe keine Ahnung, welche Linie dies verursacht.

@echo off 
for /D %%d in (*) do (
    cd %%d 
    for %%f in (*_c.lua) do (
     set FROM=%%f 
     set TO=%FROM%"c" 
     C:\curl.exe -s -X POST -F compile=1 -F debug=0 -F obfuscate=2 -F [email protected]%FROM% http://luac.mtasa.com/ > %TO% 
    ) 
    cd .. 
) 
pause 
+1

Die Batch-Datei nicht durch Doppelklicken auf das Symbol ausführen; Öffnen Sie stattdessen ein Eingabeaufforderungsfenster, navigieren Sie zum Pfad des Skripts (['cd /D'](http://ss64.com/nt/cd.html]) und führen Sie die Batch-Datei durch Eingabe ihres Namens aus Der '@echo off'-Befehl wird vorübergehend aktiviert. So können Sie die Batch-Datei debuggen, da Sie sehen können, was gerade passiert. Eine Sache im Voraus: Sie vermissen [verzögerte Erweiterung] (http://ss64.com/nt/delayedexpansion .html) ... – aschipfl

+6

Nun, wenn Sie Echo einschalten, werden Sie wahrscheinlich das Problem sehen.Unabhängig davon haben Sie auch ein Problem mit Ihren FROM- und TO-Variablen.Sie müssen sie mit verzögerter Expansion referenzieren.Aber in Wirklichkeit, ich Es gibt keinen Grund, warum Sie die FOR-Variable nicht einfach direkt in Ihrer CURL-Ausführung verwenden können – Squashman

+1

Tatsächlich ist das Problem mit der TO-Variable die Ursache für das Problem mit dem Syntaxfehler, da die TO-Variable auf nichts gesetzt ist ist nichts nach der> Umleitung, und das verursacht den Syntaxfehler – Richard

Antwort

0

SETLOCAL ENABLEDELAYEDEXPANSION an der Spitze hinzufügen, dann in der Schleife alle Variablenreferenzen ändern ! statt % zu verwenden. See more info here.

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 
for /D %%d in (*) do (
    cd %%d 
    for %%f in (*_c.lua) do (
     set FROM=%%f 
     set TO=!FROM!"c" 
     echo "C:\curl.exe -s -X POST -F compile=1 -F debug=0 -F obfuscate=2 -F [email protected]!FROM! http://luac.mtasa.com/ > !TO!" 
     C:\curl.exe -s -X POST -F compile=1 -F debug=0 -F obfuscate=2 -F [email protected]!FROM! http://luac.mtasa.com/ > !TO! 
    ) 
    cd .. 
) 
+2

Sie haben vergessen, 'set TO =% FROM%" c "' zu 'setzen TO =! FROM!" C "' Es wäre sogar besser, die zusätzlichen set-Befehle wegzulassen und '%% f' direkt zu verwenden. – LotPings

+0

Das Setzen der 'curl.exe'-Befehlszeile kann nicht funktionieren, weil die gesamte Zeile als Pfad/Datei betrachtet wird, die dann ausgeführt wird ... – aschipfl

+0

Aktualisierte Antwort, um die oben angesprochenen Dinge zu beheben, außer das Entfernen der überflüssigen Variablen. –

Verwandte Themen