Codierung falsch, aber alle?
moin, ich habe einen code geschrieben, der für mich ordner und deren inhalte kopieren soll, von einen Datenträger auf den anderen, quasi ein archivierungshelfer. den code schreibe ich gleich unten hin aber mir ergibt sich da folgendes problem: ich will nicht alle ordner eines verzeichnisses archivieren, sondern nur ausgewählte, dafür habe ich eine liste, in der all jene stehen, die kopiert werden sollen, mein problem dabei ist aber, dass die codierung nicht erkannt wird, egal welche! ich habe die liste in einem .txt dokument gespeichert ---- an der stelle will ich anmerken dass der code wohleher ein befehl für cmd ist --- und sämtliche mögliche codierungen ausprobiert, alle namen die kein ß,ä,ö oder ü haben, werden gelesen, erkannt und dann kopiert, so wie es sein soll, aber durch die codierung sucht er z.b. statt nach einem ü nach einer hochgestellten 3 ???? (ANSI) ich weiß nicht mehr weiter, ich weiß nur zu 100% dass es an der codierung liegt, denn wenn ich mir die liste von cmd ausgeben lasse passiert das oben geschriebene, alles wird normal geschrieben, außer ä ö ü und ß.
was kann ich tun???
hier mein code:
set "quelle=I:\Ordner 1\ZZZTester" & set "ziel=V:\Ordner 1\TestOrdner" & set "liste=C:\Users\*mein User*\Documents\OrdnerListeTESTER.txt"
for /f "usebackq delims=" %N in ("%liste%") do (
echo Verarbeite Ordner: %N
robocopy "%quelle%\%N" "%ziel%\%N" /E /COPY:DATSO /R:3 /W:10 /MT:8 /LOG+:kopierlog.txt
)
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
Das hier (macht bei mir ohne viel Aufwand ähnliches wie Du brauchst schon lange) käme nicht in Frage? https://syncthing.net/
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 :(
2 Antworten
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.
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
DANKE DANKE DANKE ES KLAPPT