mariogalaxy2
Goto Top

Variable Zahlen aus einer .TXT Datei per Batch, cmd extrahieren

Hallo, alle zusammen!

Also meine Frage ist:
Da ich leider auf dem Gebiet programmieren null Ahnung habe wollte ich euch fragen.
Also ich habe eine .txt Datei, ca. 5 MB groß. Drinnen sind viele verschiedene Wörter, Sonderzeichen und Zahlen und ganz verschieden angeordnet.
Die Zahlen schauen z.B. so aus: 013424245545 zwischen 8 und 12 Zahlen. Beginnen immer mit 01 und enden mit 0 bis 9.
Diese Zahlelreihe würde ich gerne in eine neue .txt Datei extrahieren, da ich sonst manuell wochen brauchen werde.
In der neuen .txt Datei sollen die Zahlen so ausschauen:
0122334554
0144556565
0136365677
usw.

Veleicht kann mir einer mit einer Batch Lösung weiterhelfen.

Vielen Dank!

Content-ID: 144732

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

Ausgedruckt am: 25.11.2024 um 02:11 Uhr

Nottrott
Nottrott 13.06.2010 um 13:47:38 Uhr
Goto Top
Hi,

du schreibst ja, dass in der ursprünglichen Datei die Zahlen immer mit 01 beginnen. Wie kommst du dann in deiner fertigen Datei auf 02... und 05....?
Wie genau schaut die Eingangsdatei aus?
Zahlen und Text zusammen in einer Zeile, durch Leerzeichen o.ä. getrennt oder wie?
Gibt es noch andere Zahlen in der Datei, die nicht kopiert werden sollen?
Poste am besten einfach mal ein Beispiel.

Gruß
Nottrott
mariogalaxy2
mariogalaxy2 13.06.2010 um 14:02:02 Uhr
Goto Top
ohh, sorry mein Fehler, habs korrigiert. also so schauts in der datei aus:

xsxfssds 27 /Et:  Ê ñÎ Ì Ê Ë xÿÿÿÍ84643 affgdjdr46g  ÿÿÿÿÿÿÿ Ê Î ./ ÿÿÿ  Ï Tõ ÿÿÿ  Ð jÞ Ò  Ñ Ó ÿÿÿ Ñ 19.05.053 233ÿÿ M”bel Boss ÿÿÿ Y Ç °É ÿ 0856755greÊ dsgets 27 /Et:  Ê ñÎ Ì Ê Ë xÿÿÿÍ 097 ddgfh55d  ÿÿÿÿÿÿÿ Ê Î ./ ÿÿÿ  Ï Tõ ÿÿÿ  Ð jÞ Ò  Ñ Ó ÿÿÿ Ñ 19.05.05 3 234ÿÿP„ntheross ÿÿÿ Y Ç °É ÿ
014645787789tttr5. 9 ET:zu Ê ñÎ Ì Ê Ë xÿÿÿÍhrtrtr5  ÿÿÿÿÿÿÿ Ê Î ./ ÿÿÿ  Ï Tõ ÿÿÿ  Ð jÞ Ò  Ñ Ó ÿÿÿ Ñ 18.01.06 5 235ÿÿHollbeck× ÿÿÿ Y Ç °É ÿgre64dSchntzler 1Ù Ë  Ê ñÎ Ì Ê Ë

da wo 014645787789 steht muss extrahiert und in einer txt Datei abgelegt werden. Wie gesagt alles sehr kaotisch. Ich hoffe es ist irgendwie möglich.

Mfg.
bastla
bastla 13.06.2010 um 14:34:28 Uhr
Goto Top
Hallo mariogalaxy2 und willkommen im Forum!

Das wäre eher ein Fall für VBS:
Quelle = "D:\Datei.txt"  
Ziel = "D:\Liste.txt"  

Set rE = New RegExp
rE.Global = True
rE.Pattern = "01\d{6,10}"  

Set fso = CreateObject("Scripting.FileSystemObject")  
Set Liste = fso.CreateTextFile(Ziel)
For Each Match In rE.Execute(fso.OpenTextFile(Quelle).ReadAll)
    Liste.WriteLine Match
Next
Liste.Close
Anmerkung zum Suchbegriff ("Pattern"): Es wird nach "01" und 6 bis 10 folgenden Ziffern gesucht.

Grüße
bastla
kkboy94
kkboy94 13.06.2010 um 14:35:32 Uhr
Goto Top
Hallo mariogalaxy2
ich kenn mich auch noch nich so aus aber ich würds jetzt mit ner for schleife und findstr machen also in etwa so
for /f  %%x in (findstr /c:"01" "PfadZurDatei\Datei.txt") do echo %%x >ausgabe.txt  


PS: Das ist das erste mal das ICH selbst was mit for /f mache, deswegen probiers lieber nicht aus.

Könnte mich einer der Profis berichtigen, wenn ich was falsch gemacht hab(was sicher viel ist)?

MfG Karsten
kkboy94
kkboy94 13.06.2010 um 14:52:31 Uhr
Goto Top
[OT]
Das ist ja lustig
Vergleich mal die Zeit von deinem Post mit der von meinem ersten Post:
kkboy94 schreibt am 13.06.2010, 14:35:32 Uhr
bastla schreibt am 13.06.2010, 14:34:28 Uhr

Müsst ich dann nich nach dier stehn?
[/OT]

MfG Karsten
bastla
bastla 13.06.2010 um 15:03:00 Uhr
Goto Top
@kkboy94
[OT 2]
Müsst ich dann nich nach dier stehn?
Du meinst sicherlich nicht Dich, sondern nur Deinen Kommentar ... face-wink

Wenn Du Dir den "Diskussionsverlauf" oben ansiehst, wirst Du bemerken, dass Du auf die Antwort von mariogalaxy2 (auf Nottrotts Kommentar) geantwortet hast, ich aber auf das Eröffnungsposting ...
[/OT 2]

Grüße
bastla
kkboy94
kkboy94 13.06.2010 um 15:16:54 Uhr
Goto Top
Ja ich meine nicht mich sondern meinen Post


Nun gut, hab ich eigentlich etwas falsch gemacht bei meiner for schleife?

MfG Karsten
bastla
bastla 13.06.2010 um 15:25:27 Uhr
Goto Top
Hallo kkboy94!
hab ich eigentlich etwas falsch gemacht bei meiner for schleife?
Das sollte eigentich Dein Test schon ergeben haben ...

Abgesehen von den fehlenden Apostrophen und davon, dass "findstr" zeilenorientiert arbeitet (was auf Grundlage des geposteten Beispiel-Dateiinhaltes zu interessanten Ergebnissen führen dürfte), würde in Deiner Ergebnisdatei (wegen des einzelnen ">") nur die letzte gefundene Zeile stehen ...

Kürzer (und ohne den letztgenannten Effekt), aber hier dennoch nicht geeignet, wäre
findstr /c:"01" "PfadZurDatei\Datei.txt">ausgabe.txt
(und ja, hier genügt dann auch ein einzelnes ">") ...

Grüße
bastla
kkboy94
kkboy94 13.06.2010 um 15:29:01 Uhr
Goto Top
Naja, es war ja mal ein Versuch wert, aber egal.
Dazu bin ich wohl noch nicht geeignet mit meinen 16 Jahren^^

Danke für die Hilfe

MfG Karsten
bastla
bastla 13.06.2010 um 15:35:16 Uhr
Goto Top
@kkboy94
[more OT]
Ich hätte mit 16 noch nicht mal diese Schleife zustandegebracht (ok, in den 1970ern gab's auch noch gar kein MS-DOS und schon gar nicht die cmd.exe face-wink) ...
[/more OT]

Grüße
bastla
mariogalaxy2
mariogalaxy2 13.06.2010 um 17:24:04 Uhr
Goto Top
Danke an euch alle für die Hilfe!

Das mit VBS Lösung von bastla hat super funktioniert! Dankeschön!


cu.