Was ist falsch an dieser for-Schleife in meinem Skript?

785
Francky Leyn
K:\bin>type get_date_without_space.bat SET DATE_WITH_SPACE=%DATE% FOR /F "TOKENS=1-2" %I IN ("%DATE_WITH_SPACE%") DO SET DATE_WITHOUT_SPACE=%I_%J ECHO %DATE_WITHOUT_SPACE% 

Das geht nicht. Warum?

K:\bin>get_date_without_space.bat K:\bin>SET DATE_WITH_SPACE=Fri 11/16/2018 DATE_WITH_SPACEI_J was unexpected at this time.  K:\bin>FOR /F "TOKENS=1-2" DATE_WITH_SPACEI_J K:\bin> 
0
Um Ihr Leerzeichen zu ersetzen, verwenden Sie einfach die Zeichenfolgenersetzung `Echo% date: = _%` LotPings vor 5 Jahren 1
Das funktioniert. Aber können Sie mir die Syntax der FOR-Anweisung geben, um die Aufgabe zu erledigen? Ich finde immer noch nicht die richtige Aussage. Francky Leyn vor 5 Jahren 0
Wie ich in meinem ersten Kommentar schrieb, verdoppeln Sie die Prozentzeichen der for-Meta-Variablen `%% I` und` %% J`. Siehe http://ss64.com/nt/for.html LotPings vor 5 Jahren 0
Führen Sie `for /?` aus und lesen Sie die Ausgabe phuclv vor 5 Jahren 0

1 Antwort auf die Frage

1
Francky Leyn
FOR /F "TOKENS=1-2" %%I IN ("%DATE_WITH_SPACE%") DO SET DATE_WITHOUT_SPACE=%%I_%%J 

Die Metavariablen sind I und J und der verwendete Originalcode %Iund %Janstelle von %%Iund %%J.

Wenn Sie zusätzliche Informationen zu Ihrer Frage posten müssen, bearbeiten Sie sie bitte. Aber dies als Antwort posten? Nee. JakeGould vor 5 Jahren 0
Dies sind keine zusätzlichen Informationen, die der Frage hinzugefügt werden sollen. Dies ist die Antwort (wenn auch knifflig). Scott vor 5 Jahren 0
@Scott Ich kann absolut nicht verstehen, wie das eine Antwort ist. JakeGould vor 5 Jahren 0
@JakeGould: Das Problem war, dass das OP in einer BAT-Datei "% I" und "% J" verwendete. Die Antwort (siehe oben) lautet "%% I" und "%% J" anstelle von "% I" und "% J". (Ich habe gesagt, dass es kläglich war.) Scott vor 5 Jahren 2
@Scott Macht Sinn. Bearbeitet, um diese Info hinzuzufügen. JakeGould vor 5 Jahren 1