Codierung falsch, aber alle?


14.05.2025, 09:12

edit: die bereits kopierten ordner sollen dann später auf dem ursprungsdatenträger inhaltlich gelöscht und umbenannt werden, dafür habe ich schon ein code snippet und das funktioniert auch, aben außer bei ß,ä,ö und ü weil das snippet auf dieselbe liste zugreift

CatsEyes  14.05.2025, 09:08

Das hier (macht bei mir ohne viel Aufwand ähnliches wie Du brauchst schon lange) käme nicht in Frage? https://syncthing.net/

Kurti801 
Beitragsersteller
 14.05.2025, 09:11

in der theorie schon, das problem ist dass der archivierungsprozess für meine firma ist und ich so ein programm nicht nutzen kann, zumal die datenmengen teilweise TB groß sind :(

3 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Hallo Kurti801!

Man kann schon Umlaute in Batch-Dateien verwenden:

Wenn z.B. ein Verzeichnis einen Umlaut enthält, wird ein Batch-Befehl unter Windows nicht korrekt ausgeführt. Im Konsolenfenster («DOS-Fenster») wird eine andere Zeichentabelle ( Codepage 1252) verwendet als in den Programmen mit grafischer Bedienoberfläche (Codepage 850).

Die DOS Codepage ist an die englische Zeichentabelle angelehnt. Sie versteht die Umlaute (ä, ö, ü) nicht.

Füge in der Batch-Datei vor dem Befehl mit dem Umlaut eine Zeile mit dem Befehl chcp 1252 ein (chcp = change code page). Damit wird die Zeichentabelle temporär auf die westeuropäische mit Nummer 1252 umgestellt.

https://www.axel-hahn.de/batch/helferlein-und-tabellen/alle-windows-kommandos?id=chcp

LG

gufrastella


Erzesel  14.05.2025, 16:39

Die Webseiten von Axel Hahn zum Thema Batch wurden seit Windows XP nicht mehr überarbeitet. Eine extrem schlechte Referenz!

Die gegenwärtig aktuellsten Beschreibungen findet man auf https://ss64.com/nt/ .

Die Codepage 1252 funktioniert zwar noch immer leidlich, ist aber ebenfalls jenseits von Gestern und erlaubt wie 850 nur 256 Zeichen.

Moderne Windowssysteme arbeiten grundsätzlich mit UTF8-Zeichensätzen!

Um alle Zeichen weitgehend zuverlässig darzustellen benötigt man die Codepage 65001. (dabei gibt es lediglich eine Einschränkung bezüglich de Zeichenumfangs des für die Console gewählte Fonts)

gufrastella  15.05.2025, 08:57

Danke für den Stern!

CMD liest Sonderzeichen wie ä, ö, ü aus Textdateien falsch, weil es standardmäßig Codepage 850 nutzt und nicht UTF-8 oder ANSI korrekt interpretiert.

Verwende stattdessen PowerShell mit UTF-8-kodierter Liste.

Seit Windows 7 wird als TextCodierung konsequent UTF8 verwendet. Dies trifft auch auf Dateinamen zu.

Cmd/Batch ist wesentlich älter und nicht besonders kompatibel zu UTF8. Die Console (Cmd) arbeitet (hierzulande) wie vor 30Jahren noch immer mit der Codepage 850 "Multilingual (Latin I)". Um einigermaßen international kompatibel zu sein wurde Mit Windows NT die Codepage 1252 "West European Latin" präferiert . Allerdings muss man diese in der Console explizit setzen. diese musste jedoch weiterhin mit 256 Zeichen auskommen.

Mit Windows 7 wurde die Codepage 65001 (UTF8) eingeführt um auf alle Zeichen Zugriff zu haben.

Die Codepage stellt man in der Console mit dem Befehl :

chcp 65001

...auf UTF8 ein.

demo.cmd

@echo off
chcp 65001

echo Müllers Möhre wird  gemäht.
echo Маша и Медведь
echo Ο Οδυσσέας ήταν ναυτικός
pause

Die Batch muss im Editor als UTF8 ohne BOM gespeichert werden.

Vergiss irgendwelche Tipps bezüglich 1252. Diese haben über 20 Jahre auf dem Buckel und wurden seither von einem Ratgeber zum anderen übernommen ohne diese zu hinterfragem.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit über 30 Jahren