maneich
Goto Top

.reg-Datei mit CMD oder VBS auslesen

Hallo,

bin vor kurzem von WinME auf WinXP Prof. ungestiegen.

Der Umstieg und die Integration der Dateien und div. Programme aus WinME hat ja auch ganz gut geklappt.
Nur habe ich unter WinXP Probleme eine gespeicherte .reg-Datei auszulesen, unter WinME war das immer mit einer Batch oder mit VBS möglich.

Unter WinXP wird mir beim Testlauf mit einer CMD-Datei

for /f %%i in (xyz.reg) do echo %%e & pause

überhaupt nicht angezeigt, die CMD schließt sofort wieder.

Bei VBS also nach Set fs = CreateObject.... und Set f = fs.OpenTextFile..... mit

For i = 1 To 20
WScript.Echo f.ReadLine
Next

wird die erste Ausgabe mit 4 kyrillichen Zeichen ausgegeben und die weiteren 19 Zeilen werden leer ausgegeben, obwohl ab der ersten Zeile auch Daten enthalten sind.

Habe dann ermittelt, daß die .reg-Dateien im Unicode Format gespeichert werden; aber auch wenn ich diese als .txt-Datei speichere, bleibt das Unicode-Format.

Gibt es eine Möglichkeit das Auslesen dennoch zu realisieren?

Es handelt sich hier um Dateien mit ca. 15 - 20 MB, was eine manuelle Bearbeitung sehr schwierig macht.

Ich bin für jede Info dankbar, die mir hilft dieses Problem zu lösen.

MfG maneich

Content-ID: 72132

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

Ausgedruckt am: 25.11.2024 um 22:11 Uhr

Biber
Biber 29.10.2007 um 09:17:57 Uhr
Goto Top
Moin maneich,

schon wieder montach und schon wieder Fragen nach undokumentieriten Features... face-wink

Bei der Batch-Variante kann ich eventuell helfen, bei dem VBS.Schnipsel musst Du warten, bis bastla wach ist.
Ersetze:
for /f %%i in (xyz.reg) do echo %%i 
-durch-
for /f "delims=" %%i in ('more xyz.reg^>con')  do @echo %%i  

Erläuterung
1) Unicode-Dateien werden von more.com stillschweigend in ANSI transformiert.
2) ein "more xyz.reg" z.B. vom CMD-Prompt würde tatsächlich nach "Vollschreiben" des Bildschirms ein "-beliebige Taste für Weiter-" bringen. Duch die Umlietung mit ">con" umgehe ich das.
3) ebenso kannst Du natürlich auch die *.reg-Datei "wirklich" dauerhaft in ANSI konvertieren
mit "more xyz.reg>%temp%\xyz.Ansi" und dann diese Kopie auslesen.

Grüße
Biber
bastla
bastla 29.10.2007 um 14:02:40 Uhr
Goto Top
Hallo maneich und guten Morgen face-wink!

An sich müsstest Du der VBS-"OpenTextFile"-Methode nur einen zusätzlichen Parameter "True" spendieren, um auf das Format "Unicode" zu verweisen, also etwa:
Set f = fs.OpenTextFile("xyz.reg", 1, , True)  

Grüße
bastla
maneich
maneich 29.10.2007 um 18:00:32 Uhr
Goto Top
Hallo Biber, hallo bastla,

ich bedanke mich für Eure Antworten.

Nun ja, mit einer Batch ist das doch nicht so einfach.

Über die for-Schleife bekomme ich die Daten zwar am Bildschirm angezeigt, jedoch läuft der Bildschirm weiter bis zum Ende der Datei. Keine Chance hinter der Klammer mit do ... etwas zu verändern oder in eine Datei zu speichern.

Nur mit "more xyz.reg>xyz.ansi" geht das auch nur bedingt, d.h. es wird zwar in die Datei gespeichert, aber nachdem 2.868 MB gespeichert wurden, bleibt die CMD einfach stehen, speichert also nicht mehr weiter, und das ohne Fehlermeldung.

Mit VBS sieht das schon besser aus mit True.

Hier kann ich nun aus einer .reg-Datei die Daten die ich brauche suchen und auch finden.

Schreibe ich diese Datei in eine neue .reg-Datei so wird diese dann in ANSI-Codierung angelegt. Diese Datei kann ich dann über "Speichern unter" auch wieder in Unicode-Codierung umändern.

Bleibt nur noch die Frage ob die Änderung der Codierung Ansi > Unicode so auch fehlerfrei ist.

Also nochmals meinen besten Dank an euch beide und bis zum nächsten mal.

MfG maneich