malkeba
Goto Top

FOR Schleife Umlaute in der Pfadangabe

Hallo Zusammen,

ich hoffe ihr könnt mir Helfen.

Ich habe in einer Batchdatei folgendes Befehl:
FOR /f "usebackq delims==" %%a IN (c:\test\test.txt) DO del "%%a"

Löschen von Dateien die in den Pfadangaben Umlaute enthalten ist nicht möglich.
Wie soll ich mein Befehl erweitern, damit nicht nur Leerzeichen im Pfad berücksichtigt werden sondern auch die darin enthaltene Umlaute. zB.

test.txt
C:\ab cd\Röhre 12\asus.xt
C:\ab cd\Roh 1-2\Fächer.xt
C:\Löwe cd\Roh1-2\Föhn -12.xt etch.

diese Dateien werden nicht gelöscht.

Für eine schnelle Hilfe wäre ich dankbar.

Malkeba

Content-ID: 92979

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

Ausgedruckt am: 25.11.2024 um 01:11 Uhr

67369
67369 26.07.2008 um 20:58:08 Uhr
Goto Top
Die Eingabeaufforderung (cmd.exe) verwendet einen anderen Zeichensatz, deshalb stimmten die Umlaute nicht.

Erstelle die Textdatei test.txt mit edit.com, dann stimmen auch die Umlaute.
malkeba
malkeba 26.07.2008 um 22:13:46 Uhr
Goto Top
Ich bekomme immer eine fertige Liste als .txt mit 600 bis 1000 Einträge
bastla
bastla 26.07.2008 um 22:13:54 Uhr
Goto Top
Hallo malkeba!

Baue mal vor der Schleife
for /f "tokens=2 delims=:." %%i in ('chcp') do set "CP=%%i"  
chcp 1252 >nul
und danach
chcp %CP% >nul
ein.

Grüße
bastla
malkeba
malkeba 26.07.2008 um 22:17:28 Uhr
Goto Top
könntest du mir erklaeren was genau in dieser 3 Zeilen passiert?
bastla
bastla 26.07.2008 um 22:21:52 Uhr
Goto Top
Hallo malkeba!

In der ersten Zeile - noch genauer, weil ohne führendes Leerzeichen, wäre übrigens
for /f "tokens=3 delims=:. " %%i in ('chcp') do set "CP=%%i"  
wird die aktuelle CodePage (üblicher Weise 850) ausgelesen und in der Variable %CP% zwischengespeichert. Danach wird auf CP 1252 (Windows ANSI, siehe etwa hier) umgeschaltet, und am Ende wird wieder die ursprüngliche CP gesetzt.

Grüße
bastla
malkeba
malkeba 26.07.2008 um 22:37:41 Uhr
Goto Top
Hallo Bastla,

ich danke dir vielmals. Es funktioniert!!
@67369: Danke

Gruß
Malkeba