Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Daten auslesen

Frage Entwicklung Batch & Shell

Mitglied: Rindercountry

Rindercountry (Level 1) - Jetzt verbinden

24.09.2009, aktualisiert 27.10.2009, 3875 Aufrufe, 5 Kommentare

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
Mitglied: Biber
24.09.2009 um 20:48 Uhr
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:
01.
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:
01.
Text und zahlen gegebenenfalls sonderzeichen wie ( ) "zb:1234 (dcba)" 
02.
Text und zahlen gegebenenfalls sonderzeichen wie ( ) "zb:4321 (abcd)" 
03.
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
Bitte warten ..
Mitglied: 16568
24.09.2009 um 21:03 Uhr
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:
01.
> for /f "delims=: tokens=3* " %i in ('findstr /n 
02.
> "." e:\schnipsel\quelldat*.*^|find ":2:"') do 
03.
> @echo %j 
04.
> 

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


Lonesome Walker
Bitte warten ..
Mitglied: Rindercountry
24.09.2009 um 21:53 Uhr
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.
Bitte warten ..
Mitglied: Biber
28.09.2009 um 07:28 Uhr
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:

01.
::---- Rindercountry.cmd ------- 
02.
@echo off & setlocal 
03.
@FOR /F "delims=: tokens=3* " %%i IN ( 
04.
    'findstr /n "." e:\schnipsel\quelldat*.*^|find ":2:"' 
05.
    ) DO @FOR /F "tokens=1,*" %%a in ("%%j") do @echo %%a %%b 
-- bzw. paramteergesteuert--
01.
::---- Rindercountry2.cmd ------- 
02.
@FOR /F "delims=: tokens=3* " %%i IN ( 
03.
    'findstr /n "." "%~1"^|find ":%2:"' 
04.
    ) DO @FOR /F "tokens=1,*" %%a in ("%%j") do @echo %%a %%b  
Angewandt auf die angelisteten Quelldateien:ergibt sich:
01.
>findstr "." e:\schnipsel\quellda*.* 
02.
e:\schnipsel\Quelldatei3.txt:irgendwelche daten 
03.
e:\schnipsel\Quelldatei3.txt:O333 
04.
e:\schnipsel\Quelldatei3.txt:irgendwelche daten 
05.
e:\schnipsel\Quelldatei2.txt:irgendwelche daten 
06.
e:\schnipsel\Quelldatei2.txt:O222 (beliebiger text zu O222) 
07.
e:\schnipsel\Quelldatei2.txt:irgendwelche daten 
08.
e:\schnipsel\Quelldatei1.txt:irgendwelche daten 
09.
e:\schnipsel\Quelldatei1.txt:O11111111 (beliebiger text zu O11111111) 
10.
e:\schnipsel\Quelldatei1.txt:Zeile3: irgendwelche daten 
11.
 
12.
(= 7:14:34  D:\temp=) 
13.
>e:\schnipsel\rindercountry 
14.
O333 
15.
O222 (beliebiger text zu O222) 
16.
O11111111 (beliebiger text zu O11111111) 
17.
 
18.
(= 7:14:42  D:\temp=) 
19.
>e:\schnipsel\rindercountry2 e:\schnipsel\quellda*.* 2 
20.
O333 
21.
O222 (beliebiger text zu O222) 
22.
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
Bitte warten ..
Mitglied: Rindercountry
28.09.2009 um 17:50 Uhr
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

Mfg Und 1000 dank
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst HTML-Seiten öffnen und bestimmte Daten auslesen (1)

Frage von makroll10 zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Batch & Shell
Daten nach dem auslesen per Powershell moven - kopieren - löschen (1)

Frage von Luckyyluck zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...