rindercountry
Goto Top

Daten auslesen

Hallo. Ich hab ein Problem mit daten aus textdateien und suche eine Lösung.
Ich hoffe das mir da irgendwer helfen kann.
Danke schonmal im voraus.

Mein Problem sieht folgendermaßen aus:

da ich leider keine Programmierkenntnisse besitze, bitte ich um eure Hilfe.

Ich habe einen Ordner mit zum Beispiel 200 Textdatein (können auch mehr oder weniger sein)
ich brauche ein Tool das aus jeder dieser Textdatein die Daten der kompletten zweiten Zeile (unabhängig was darin steht) kopiert und nacheinander in eine neue Textdatei oder exeltabelle eingefügt.
Die Dateien die in diesem ordener sind alles Textdateien die allerdings unterschiedliche Dateiendungen besitzen können also kein txt sondern zb. "DC" , "FP" , "OT" oder "NC".
Also egal wie die Endung ist aus jeder beliebigen datei in dem ordner die bestimmte zeile kopieren.

Beispiel:

Quelldatei 1:

Zeile1: irgendwelche daten
Zeile2: Text und zahlen gegebenenfalls sonderzeichen wie ( ) "zb:1234 (abcd)"
Zeile3: irgendwelche daten
...
...

Quelldatei 2:

Zeile1: irgendwelche daten
Zeile2: Text und zahlen gegebenenfalls sonderzeichen wie ( ) "zb:4321 (abcd)"
Zeile3: irgendwelche daten
...
...

Quelldatei 3:

Zeile1: irgendwelche daten
Zeile2: Text und zahlen gegebenenfalls sonderzeichen wie ( ) "zb:1234 (dcba)"
Zeile3: irgendwelche daten
...
...


Zieldatei:

1234 (abcd)
4321 (abcd)
1234 (dcba)

mir wäre zum Beispiel auch eine Art Makro für Excel sehr recht das die Daten kopiert und in eine Excel Tabelle einfügt statt in eine Textdatei, muss aber nicht sein.

wenn es möglich ist wäre es schön wenn man:

- den Ordner in dem sich die Textdatein befinden,
- die zeile (zb.: Zeile2 oder Zeile3 oder.... die kopiert werden soll,
- Namen und Pfad der Zieldatei

wählen könnte.

Ich weiß nicht ob so etwas überhaupt so einfach und ohne größeren Aufwand möglich ist und hoffe das mir da jemand weiterhelfen kann.
Ich bedanke mich schon einmal im Voraus und wünsche allen noch einen schönen Tag.

Mfg Rindercountry

Content-Key: 125747

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

Printed on: April 23, 2024 at 10:04 o'clock

Member: Biber
Biber Sep 24, 2009 at 18:48:18 (UTC)
Goto Top
Moin Rindercountry,

willkommen im Forum.

Regelmäßig in unseren Projektbesprechungen, wenn die tollen Powerpointfolien im corporate design aufgelegt und durchgeklickt werden....
... kommt nach den ersten 3 Klötzchenbildern mit dem GROSSEN Zusammenhang die etwas detailliertere Konzeptdarstellung ....
und IMMER auf dieser Folie 4 ist so ein dicker spiralförmiger Pfeil von A nach B.

Auch ohne Beschriftung weiss immer jeder den Anwesenden: "Jepp, genau HIER passiert offensichtlich ein kleines Wunder".

Wie ich soeben gelernt habe, geht das auch ohne PowerPoint.
....
Quelldatei 3:
---
Zeile1: irgendwelche daten
Zeile2: Text und zahlen gegebenenfalls sonderzeichen wie ( ) "zb:1234 (abcd)"
Zeile3: irgendwelche daten
...
...
Zieldatei:
---
1234 (abcd)
4321 (abcd)
1234 (dcba)

Ah ja.
Der Algorithmus, um von A bzw der Quelldatei-Zeile #2 nach B bzw auf den Bolzen "1234 (abcd)" zu kommen ist...?
Intuition? Internes Applikationswissen? Künstliche Intelligenz?

Wenn der Aufbau der Zeile 2 (oder welcher auch immer) keine beschreibbare Struktur hat, dann können wir Kram den Hasen geben.
Ober zumindest nicht automatisiert verarbeiten.

Die jeweils 2. Zeilen rausflöhen aus den Dateien und in eine neue Datei schreiben ist schnell gemacht.
Das sollte ein Oneliner vom CMD-Prompt aus belegen:
for /f "delims=: tokens=3* " %i in ('findstr /n "." e:\schnipsel\quelldat*.*^|find ":2:"') do @echo %j  
Output wäre bei Deinen 3 Beispieldateien unter den Namen e:\schnipsel\quelldatei1.txt /...2.bla, ...3.Blubb:
Text und zahlen gegebenenfalls sonderzeichen wie ( ) "zb:1234 (dcba)"  
Text und zahlen gegebenenfalls sonderzeichen wie ( ) "zb:4321 (abcd)"  
Text und zahlen gegebenenfalls sonderzeichen wie ( ) "zb:1234 (abcd)"  

wobei aber schon deutlich wird, dass die Information, welche Zeile aus welcher Quelldatei kommt verloren geht.

Auch diesen pilpul bekommen wir schnell gebacken:
- den Ordner in dem sich die Textdatein befinden,
- die zeile (zb.: Zeile2 oder Zeile3 oder.... die kopiert werden soll,
- Namen und Pfad der Zieldatei

Aber die Zeilenzerlegung ist nicht definiert.

Bitte um etwas genauere Beschreibung der Anforderung.

Grüße
Biber
Mitglied: 16568
16568 Sep 24, 2009 at 19:03:22 (UTC)
Goto Top
Zitat von @Biber:
...
Die jeweils 2. Zeilen rausflöhen aus den Dateien und in eine
neue Datei schreiben ist schnell gemacht.
Das sollte ein Oneliner vom CMD-Prompt aus belegen:
> for /f "delims=: tokens=3* " %i in ('findstr /n  
> "." e:\schnipsel\quelldat*.*^|find ":2:"') do  
> @echo %j
> 

Wenn ich sowas lese, frage ich mich immer, ob das noch zur Programmierung, oder schon zur Quanten-Physik gehört :-p


Lonesome Walker
Member: Rindercountry
Rindercountry Sep 24, 2009 at 19:53:58 (UTC)
Goto Top
danke erstmal. also der aufbau ist folgendermaßen:

in der 1. zeile steht immer %
in der 2. zeile steht immer "O11111111 (beliebiger text)"

ich brauch keinen bezug zur quelldatei es muß nicht vermerkt werden aus welcher datei welche zeile stammt ich will nur eine übersicht aller dateien im ordner erstellen und in einer datei aufgelistet haben. weil in jeder datei in der 2. zeile beschrieben steht um was es genau geht.
die zweite zeile beginnt immer mit O der nummernfolge (1 - max. 8 stellen) und dem kommentar in klammern beliebig lang. O ist immer gleich, die zahl und der kommentar verschieden.
Member: Biber
Biber Sep 28, 2009 at 05:28:08 (UTC)
Goto Top
Moin Rindercountry,

sorry, ich hatte den Beitrag irgendwie aus den Augen verloren.

Eigentlich lohnt es sich wirklich nicht, dafür einen Batch zu schreiben - es wird nach dem, was bisher ist, nicht mehr als ein Oneliner.
Aber okay, im Batch kann ich ihn über mehrere Zeilen etwas lesbarer formatieren.

Wenn ich die oben stehende CMD-Zeile als Batch speichere UND noch eine weitere Konvertierung der Ergebniszeilen 8im Beispiel oben ja die jeweils 2. Zeilen) vorsehe, ergibt sich auch gerade mal:

::---- Rindercountry.cmd -------
@echo off & setlocal
@FOR /F "delims=: tokens=3* " %%i IN (  
    'findstr /n "." e:\schnipsel\quelldat*.*^|find ":2:"'  
    ) DO @FOR /F "tokens=1,*" %%a in ("%%j") do @echo %%a %%b   
-- bzw. paramteergesteuert--
::---- Rindercountry2.cmd -------
@FOR /F "delims=: tokens=3* " %%i IN (  
    'findstr /n "." "%~1"^|find ":%2:"'  
    ) DO @FOR /F "tokens=1,*" %%a in ("%%j") do @echo %%a %%b    

Angewandt auf die angelisteten Quelldateien:ergibt sich:
>findstr "." e:\schnipsel\quellda*.*  
e:\schnipsel\Quelldatei3.txt:irgendwelche daten
e:\schnipsel\Quelldatei3.txt:O333
e:\schnipsel\Quelldatei3.txt:irgendwelche daten
e:\schnipsel\Quelldatei2.txt:irgendwelche daten
e:\schnipsel\Quelldatei2.txt:O222 (beliebiger text zu O222)
e:\schnipsel\Quelldatei2.txt:irgendwelche daten
e:\schnipsel\Quelldatei1.txt:irgendwelche daten
e:\schnipsel\Quelldatei1.txt:O11111111 (beliebiger text zu O11111111)
e:\schnipsel\Quelldatei1.txt:Zeile3: irgendwelche daten

(= 7:14:34  D:\temp=)
>e:\schnipsel\rindercountry
O333
O222 (beliebiger text zu O222)
O11111111 (beliebiger text zu O11111111)

(= 7:14:42  D:\temp=)
>e:\schnipsel\rindercountry2 e:\schnipsel\quellda*.* 2
O333
O222 (beliebiger text zu O222)
O11111111 (beliebiger text zu O11111111)

Aber: die Ausgabe, hier nochmal getrennt in Token %%a und %%b unterscheidet sich ja kein Stück von der Ausgabe OHNE die zweite FOR-Anweisung.
Ist also mehr als Basis für künftige Erweiterungen gedacht.
(für Excel/eineCSV-Datei kannst Du z.B. zwischen %%a und %%b ein Komma statt ein Leerzeichen setzen, aber das brauch ich wohl nicht vorkaspern.

Falls es Dir mit festen Pfad/Dateiangaben und Zeilennummern zu inflexibel ist und mit Parametern zu unübersichtlich, dann kannst Du auch die Dateinamen/die Zeilennummern mit den Befehl "SET /P" abfragen.
Siehe dazu die Hilfe von SET am CMD-Prompt (Set /P).

Ich kann mir BTW, wenn die Ergebnisdaten so schlicht strukturiert sind, eigentlich gar nicht vorstellen, für welche weitergehende Analyse denn so ein Riesen-Excelklotz nötig sein mag. Ich denke, auch die restlichen Fragestellungen an diese extrahierten Daten sollten mit FindStr und Sort on the fly beantwortbar sein.

Grüße
Biber
Member: Rindercountry
Rindercountry Sep 28, 2009 at 15:50:38 (UTC)
Goto Top
ich danke dir. ich denke mit der anleitung bekomm ich des hin.
wie gesagt war da komplett planlos, hab mich daraufhin auch erstmal bissel belesen was die grundlagen betriftt. Wenn man nix mit zu tun hat iss des alles fachchinesisch face-smile

Mfg Und 1000 dank