aldeeer
Goto Top

TxT im UTF Format speichern

Hallo,

ich mach es kurz.
WIe kann ich per Batch Skript eine Ausgabe in UTF Format speichern? Bei mir wird es immer im ANSI gespeicht, wo ich mit den Sonderzeichern probleme bekomme beim Weiterbearbeiten.

Content-Key: 112303

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

Printed on: April 19, 2024 at 06:04 o'clock

Member: godlie
godlie Mar 25, 2009 at 11:29:39 (UTC)
Goto Top
Das kannst du getrost in die Tonne kicken face-smile
Die cmd shell kann kein UTF oder UNICODE.

Da wirst eher glück haben mit VBScript oder anderen Konsorten, evtl. AutoIT aber keine Garantie für die Auskunft.
Member: Aldeeer
Aldeeer Mar 25, 2009 at 11:43:05 (UTC)
Goto Top
Ich habe es befürchtet aber die offnung stirbt zu letzt.
Gibt es denn eine andere Möglichkeit dies zu ändern? Das System läuf schon und es soll batch sein.
Sonst muss ich halt die Sonderzeichen umwandeln....face-sad

Danke!

Gruß Aldeeer
Member: miniversum
miniversum Mar 25, 2009 at 13:04:00 (UTC)
Goto Top
Nur mal ne Idee so ins Blaue.
Mit vbs könnte das gehen.
Dann könntst du dir eine Temponäre vbs-Datei anlegen und diese als schreibbefehl in eine Datei nutzen. Also statt
echo bla >> Datei.txt
dann so:
writetofile.vbs "bla" "Datei.txt"
Aber für vbs gibts hier andere Experten.
Member: Biber
Biber Mar 25, 2009 at 13:36:00 (UTC)
Goto Top
Moin alle,
Zitat von @godlie:
Das kannst du getrost in die Tonne kicken face-smile
Die cmd shell kann kein UTF oder UNICODE.

Na ja, sooo würde ich es nicht ausdrücken....
Siehe beispielsweise die Hilfe zu cmd die letzten angezeigten Zeilen
>cmd /?
Startet eine neue Instanz des Windows 2000-Befehlsinterpreters.

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] Zeichenfolge]

/C      Führt den Befehl in der Zeichenfolge aus und endet dann.
/K      Führt den Befehl in der Zeichenfolge aus und endet dann nicht.
/S      Bestimmt Behandlung von Zeichenfolgen nach /C oder /K (siehe unten).
/Q      Schaltet die Befehlsanzeige aus.
/D      Deaktiviert die Ausführung von AutoRun-Befehlen von der Registrierung.
/A      Ausgabe interner Befehle in eine Pipe oder Datei im ANSI-Format.
/U      Ausgabe interner Befehle in eine Pipe oder Datei im UNICODE-Format.
....
@Aldeeer
kannst Du bitte mal konkretisieren was Dein Begehr ist und wie/mit welchen Sonderzeichen Du Probleme bei welcher Verarbeitung hast?

Grüße
Biber
Member: Aldeeer
Aldeeer Mar 25, 2009 at 13:54:19 (UTC)
Goto Top
Also ich lese mit dem LogParser Daten aus Log Dateien aus.
Diese Daten werden in einer TxT gespeichert. Diese Textdatei bearbeite ich dann noch ein bissl per Batch und schreibe sie wieder hinein.
Danach nehm ich diese Datei und lese sie Zeilenweise aus und füge sie mit dem Befehl eventcreate in ein Eventlog ein.

In diesen Logs sind aber ä, ü, usw.. enthalten welche dann in der Ereignisanzeige nicht richtig dargestellt werden.
Ich hoffe mit der Erklärung könnt ihr was Anfangenface-smile.

Gruß Alter
Member: godlie
godlie Mar 25, 2009 at 14:42:07 (UTC)
Goto Top
So jetzt nochmal langsam zum mitdenken:

Mit Batch / Cmd geht das nicht!
Member: miniversum
miniversum Mar 25, 2009 at 20:08:04 (UTC)
Goto Top
mit
chcp 1252
kannst du die Codepage umschalten. Dann werden auch äöü und so weiter "richtig dargestellt".
Member: Aldeeer
Aldeeer Mar 25, 2009 at 21:01:51 (UTC)
Goto Top
Danke ich werde es Morgen gleich mal einbauen und mein Glück versuchen.

Schönen Abend noch

Gruß Aldeeer
Member: Aldeeer
Aldeeer Mar 26, 2009 at 07:42:48 (UTC)
Goto Top
Bringt leider auch nicht die Lösung. Aber ma was anderesbevor ich es lasse damit mit godlie srecht hat.
Wenn ich mit dem Befehl eventcreate ein Event erzeuge mit ä ü etc... nur auf der cmd, werden alle zeichen richtig Dargestellt. Sobald ich dies in eine Bach einbau und diese laufen lasse wird es halt nicht richtig Codiert.
Kann das einer erklären?

Gruß Aldeeer
Member: miniversum
miniversum Mar 26, 2009 at 16:43:39 (UTC)
Goto Top
Da verweiße ich jetzt auf mein Posting weiter oben. Gleicher Effekt:
Member: bastla
bastla Mar 26, 2009 at 17:22:57 (UTC)
Goto Top
... oder zum Ausprobieren:

Inhalt der Logdatei (ANSI):
Übliche Maßnahme durchgeführt.
Batch:
@echo off & setlocal
for /f "tokens=2 delims=:." %%i in ('chcp') do set "CP=%%i"  
chcp 1252>nul
for /f "delims=" %%i in (D:\Logdatei.txt) do eventcreate /T INFORMATION /ID 999 /D "%%i">nul  
chcp %CP%>nul
Grüße
bastla
Member: Aldeeer
Aldeeer Mar 26, 2009 at 23:23:38 (UTC)
Goto Top
Guten spät Abend,

Ok werde ich Probieren am Dienstag bastla. Eher wird es leider nicht. Aber was anderes bzw ein andere Ansatz.
So wie ich mich Informiert habe liegt der Zeichensatz bei DOS wo anders als bei Windows. Batch ist ja DOS und die cmd wird im Windows ausgeführt.
Ich wollt mal Probieren einfach die Zeichen zu Filtern und diese dann per Ascii Code anders Darstellen.
Was haltet ihr davon?

Gruß Aldeeer
Member: bastla
bastla Mar 27, 2009 at 06:50:15 (UTC)
Goto Top
Hallo Aldeer!
liegt der Zeichensatz bei DOS wo anders als bei Windows. Batch ist ja DOS und die cmd wird im Windows ausgeführt.
... bzw etwas exakter: In der CMD-Shell (DOS wurde unter Windows ME "begraben" bzw zumindest "versenkt") wird ASCII, in Windows ANSI verwendet.
Soferne das Log-File original in Unicode vorliegt und es keine Notwendigkeit gibt (die Umlaute sind nicht Grund genug dafür), Ergebnisse in Unicode zu produzieren, wäre es sinnvoll, bereits zu Beginn der Verarbeitung die implizite Konvertierungsfunktion des "type"-Befehles zu verwenden, also ganz einfach:
type Unicode-Log.txt>Log.txt
und mit der so erzeugten Datei "Log.txt" weiter zu arbeiten - dann sollte auch das Umschalten der Codepage auf 1252 genügen ...

Grüße
bastla