majcho
Goto Top

DOS batch Dateinamen mit Umlauten umbennen

Bei DOS-Batch scripten habe ich immer wieder Probleme mit Umlauten in Dateinamen. Ich würde gerne die Dateinamen temporär umbennenen. Habe es schon mit diesem Trick probiert, was leider auch nicht immer zum Erfolg führt. Gibt es eine einfache Schleifenlösung um Dateinamen mit Umlauten umzuwandeln?

chcp 1252>nul
SET ue=ü
SET ae=ä
SET oe=ö
SET Uue=Ü
SET Aae=Ä
SET Ooe=Ö
SET ss=ß
chcp 850>nul

set pdfname=Ün lü türk.pdf
set pdfname1=%pdfname: =% :: Leerzeichen entfernen

echo %pdfname1%
Ergebnis: Ünlütürk.pdf

Content-Key: 384641

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

Printed on: April 27, 2024 at 00:04 o'clock

Member: NetzwerkDude
NetzwerkDude Aug 28, 2018 updated at 09:20:46 (UTC)
Goto Top
Ist das wirklich eine DOS umgebung? Weil im moderneren Windows könntest du mit dem Powershell Operator "replace" arbeiten:
https://docs.microsoft.com/de-de/powershell/module/microsoft.powershell. ...

z.B. so:
'Eingabe' -replace 'was','womit'  

also als einzeiler etwa so:
'Ün lü türk.pdf' -replace 'ü','ue' -replace 'ä','ae'  
Ergebnis:
uen lue tuerk.pdf

das würde ä's und ü's wegmachen, entsprechend deine komplette tabelle dahinterschreiben im selben format um alle umlaute abzufangen
Member: majcho
majcho Aug 28, 2018 at 09:36:05 (UTC)
Goto Top
Mit powershell habe ich als low level user (programmieren wenig Kenntnisse) noch nicht gearbeitet. Ich habe vor die Dateien nach weiter mit gawk und ghostscript zu verarbeiten. Deshalb passt powershell nicht. Diese Umlauteproblematik ist erst jetzt nach einem Windows Update vor ein paar Tagen aufgetaucht.
Member: Bitboy
Bitboy Aug 28, 2018 at 10:02:27 (UTC)
Goto Top
Kannst du mal genau beschreiben wo dein Problem mit den Dateinamen ist?
Ein chcp 1252 am Anfang der Batch sollte eigentlich reichen um in der Ausgabe die Umlaute richtig darzustellen.
Member: Lochkartenstanzer
Lochkartenstanzer Aug 28, 2018 updated at 10:08:05 (UTC)
Goto Top
Zitat von @majcho:

Ich habe vor die Dateien nach weiter mit gawk und ghostscript zu verarbeiten.

moin,

Wenn Du gawk und ghostscript verwendest, ist sicher eine bash-umgebung nciht weit weg.

Dann schau mal nach mmv. Damit ist das Umbenennen trivial.

Selamlar,

lks
Member: majcho
majcho Aug 28, 2018 updated at 10:37:27 (UTC)
Goto Top
Habe das Problem entdeckt und gelöst.

Nach dem Aufruf der batch-Datei

set chcp 1252
Die Umgebungsvariable "chcp 1252 " ist nicht definiert.

Das Problem tauchte plötzlich nach dem Update von Windows 10 auf.

jetzt muss es lauten

chcp 1252
oder
chcp 65001
ohne dem
set
Dann funktioniert die neue Umgebungsvariable.

Das Windows 10 Update scheint irgend etwas bewirkt zu haben?!
Mitglied: 137084
137084 Aug 30, 2018 updated at 09:12:39 (UTC)
Goto Top
Zitat von @majcho:
set chcp 1252
Die Umgebungsvariable "chcp 1252 " ist nicht definiert.
Die gab es auch noch nie! Und so definiert man auch keine Variable mit *set*. chcp ist ein *Befehl* keine Variable.