anmelder
Goto Top

FOR f Schleife mit Leerzeichen im Pfad

Hallo,

meine Batch soll auch dann laufen wenn sie in einem Ordner mit Leerzeichen gespeichert wird.

echo off
CLS
SETLOCAL ENABLEDELAYEDEXPANSION

if exist "d:\neuer ordner" echo ja  


 FOR /f "delims=" %%i IN ("d:\neuer ordner\test.txt") DO (  
SET a=%%i

echo test !a!
)


pause

Es wird ausgegeben:

ja
test d:\neuer ordner\test.txt
Drücken Sie eine beliebige Taste . . .

Damit das funktioniert muß ich den Dateinamen in Anführungszeichen setzten, dann wird der String aber als Text bearbeitet. Ist die Schleife nicht fähig Ordner mit Leerzeichen zu benutzen oder muß man irgendeine Maskierung verwenden? Wenn die Schleife keine Leerzeichen kennt, ist es möglich den Dos namen in 8.3 Form heruaszufinden und zu verwenden?

Wenn es keine Lösung gibt diese Pfade zu verwenden suche ich eine Schleife die einen Pfad vorab auf Gültigkeit auf 8.3 Kompatibilität überprüft um eine vernünftige Fehlermeldung auszugeben daß sich das Programm im falschen Ordner befindet wenn absehbar ist daß es einen Fehler geben wird.

Content-ID: 506755

Url: https://administrator.de/contentid/506755

Ausgedruckt am: 22.11.2024 um 04:11 Uhr

141320
Lösung 141320 19.10.2019 aktualisiert um 14:54:25 Uhr
Goto Top
usebackq ist dein Stichwort, dann kannst du deinen Pfad in der FOR-Schleife in Anführungszeichen setzen und er wird als solcher behandelt
FOR /f "usebackq delims=" %%i IN ("d:\neuer ordner\test.txt") DO (  

Einfach mal for /? in die Konsole eingeben ..

usebackq        - Gibt an, dass die neue Semantik in Kraft ist,
                  wobei eine Zeichenfolge in umgekehrten Anführungs-
                  zeichen als Befehl ausgeführt wird und eine
                  Zeichenfolge in Anführungszeichen ein literaler
                  Befehl ist, der die Verwendung von doppelten
                  Anführungszeichen um Dateinamen in Dateien-
                  sätzen erlaubt.
anmelder
anmelder 19.10.2019 um 14:56:58 Uhr
Goto Top
Danke. Ich habe die Hilfe gelesen aber fand diesen Text nicht sehr erleuchtend:

Gibt an, dass die neue Semantik in Kraft ist,
                          wobei eine Zeichenfolge in umgekehrten Anführungs-
                          zeichen als Befehl ausgeführt wird und eine
                          Zeichenfolge in Anführungszeichen ein literaler
                          Befehl ist, der die Verwendung von doppelten
                          Anführungszeichen um Dateinamen in Dateien-
                          sätzen erlaubt.

face-smile
141320
141320 19.10.2019 aktualisiert um 15:08:36 Uhr
Goto Top
Zitat von @anmelder:

Danke. Ich habe die Hilfe gelesen aber fand diesen Text nicht sehr erleuchtend:
Hmmmm, eigentlich ziemlich eindeutig face-smile:
... der die Verwendung von Anführungszeichen um Dateinamen in Dateiensätzen erlaubt.

Hier werden sie auch erleuchtet:
Tutorial zur FOR-Schleife