FOR f Schleife mit Leerzeichen im Pfad
Hallo,
meine Batch soll auch dann laufen wenn sie in einem Ordner mit Leerzeichen gespeichert wird.
Es wird ausgegeben:
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.
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.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 506755
Url: https://administrator.de/contentid/506755
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
3 Kommentare
Neuester Kommentar
usebackq ist dein Stichwort, dann kannst du deinen Pfad in der FOR-Schleife in Anführungszeichen setzen und er wird als solcher behandelt
Einfach mal for /? in die Konsole eingeben ..
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.
Hmmmm, eigentlich ziemlich eindeutig :
Hier werden sie auch erleuchtet:
Tutorial zur FOR-Schleife
... der die Verwendung von Anführungszeichen um Dateinamen in Dateiensätzen erlaubt.
Hier werden sie auch erleuchtet:
Tutorial zur FOR-Schleife