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-ID: 112303

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

godlie
godlie 25.03.2009 um 12:29:39 Uhr
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.
Aldeeer
Aldeeer 25.03.2009 um 12:43:05 Uhr
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
miniversum
miniversum 25.03.2009 um 14:04:00 Uhr
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.
Biber
Biber 25.03.2009 um 14:36:00 Uhr
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
Aldeeer
Aldeeer 25.03.2009 um 14:54:19 Uhr
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
godlie
godlie 25.03.2009 um 15:42:07 Uhr
Goto Top
So jetzt nochmal langsam zum mitdenken:

Mit Batch / Cmd geht das nicht!
miniversum
miniversum 25.03.2009 um 21:08:04 Uhr
Goto Top
mit
chcp 1252
kannst du die Codepage umschalten. Dann werden auch äöü und so weiter "richtig dargestellt".
Aldeeer
Aldeeer 25.03.2009 um 22:01:51 Uhr
Goto Top
Danke ich werde es Morgen gleich mal einbauen und mein Glück versuchen.

Schönen Abend noch

Gruß Aldeeer
Aldeeer
Aldeeer 26.03.2009 um 08:42:48 Uhr
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
miniversum
miniversum 26.03.2009 um 17:43:39 Uhr
Goto Top
Da verweiße ich jetzt auf mein Posting weiter oben. Gleicher Effekt:
bastla
bastla 26.03.2009 um 18:22:57 Uhr
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
Aldeeer
Aldeeer 27.03.2009 um 00:23:38 Uhr
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
bastla
bastla 27.03.2009 um 07:50:15 Uhr
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