jvpvlv
Goto Top

Mittels Batch 700 TXT Files auslesen und in eine csv oder xls zusammenführen

Hallo liebe Community bin mit Batch Skripten noch recht unerfahren.

Ich habe ca 700 TXT Dateien die folgendermaßen formatiert sind:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Inv. Nr.     G0002

Titel        Wer diese anschaut
	     ist ein Bongers
Jahr         1969
Werkgruppe   Grafik
Material     Kaltnadelradierung
Maße         8,5 x 10,5 cm
Signatur     unten rechts
Auflage      5 Blätter / Serie
             Befreiung nach der 
             Trennung von 
	     Johanna Mutz
Beschreibung -
Zustand      sehr gut
Standort     Atelier
Foto          
Ausstellung   -
Bibliographie -
 
 

Ich bräuchte eine Excel Tabelle oder eine CSV Datei in der die Eigenschaften aller TXT Dateien gelistet sind.
Hoffe mir kann jemand helfen... Danke schon einmal für Ideen

Content-ID: 309123

Url: https://administrator.de/forum/mittels-batch-700-txt-files-auslesen-und-in-eine-csv-oder-xls-zusammenfuehren-309123.html

Ausgedruckt am: 15.04.2025 um 12:04 Uhr

StefanKittel
StefanKittel 07.07.2016 um 07:45:41 Uhr
Goto Top
Hallo,

Ich würde in Excel ein kleines VBA Makro schreiben welches die CSV Dateien einliest und in der Excel-Datei ablegt.
Du kannst natürlich auch Powershell oder VBS nutzen.

Oder suchst Du Jemanden der das (kostenpflichtig) für Dich programmiert?

Stefan
TlBERlUS
TlBERlUS 07.07.2016 aktualisiert um 10:43:17 Uhr
Goto Top
Hi,

prinzipiell kann ich dir ein Powershell bauen, was das erledigt.
Frage:
...die Eigenschaften aller TXT Dateien gelistet sind...
Was meinst du mit "Eigenschaften"? -> Den Inhalt?

Bzw. Wie stellst du dir die CSV-Datei vor? Poste doch mal ein Bespiel.
colinardo
colinardo 07.07.2016 aktualisiert um 11:06:33 Uhr
Goto Top
Hallo @jvpvlv, Willkommen auf Administrator .de!

Nach deinem geposteten Text könnte ein Powershell-Skript das alle Textdateien verarbeitet und daraus eine CSV-Datei erstellt, so aussehen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Ordner der die Textdateien enthält
$folder = 'A:\txt'  
# Ausgabe CSV-Datei
$export = 'A:\txt\export.csv'  

if ($PSVersionTable.PSVersion.Major -lt 3){write-host "ERROR: Minimum Powershell Version 3.0 is required!" -F Yellow; return}  

# Funktion zum Daten bereinigen
function clean ($s) {
    return ((($s -split [environment]::NewLine) | %{$_.trim() -replace '^\s+',''}) -join ' ').trim()  
}

# Alle Texdateien durchlaufen und Daten in CSV ausgeben
gci $folder -Filter *.txt | %{
    # Textdatei per Regular Expression auswerten
    $s = [regex]::Match((gc $_.Fullname | out-string),'(?ism)Inv\. Nr\.\s+([^\r\n]+).*?^Titel\s+(.*?)Jahr\s+(\d+).*?^Werkgruppe\s+(.*?)^Material\s+(.*?)^Maße\s+(.*?)^Signatur\s+(.*?)^Auflage\s+(.*?)^Beschreibung\s+(.*?)^Zustand\s+(.*?)Standort\s+(.*?)^Foto.*?^Ausstellung\s+(.*?)^Bibliographie\s+(.*)')  
    if($s.Success){
        write-host "Verabeite '$($_.FullName)'" -f Green  
        # custom object mit den Spalten erstellen
        $row = [pscustomobject] @{
            'Inv.Nr'=$s.Groups[1].Value  
            'Titel'=$s.Groups[2].Value  
            'Jahr'= $s.Groups[3].Value  
            'Werkgruppe'=$s.Groups[4].Value  
            'Material'=$s.Groups[5].Value  
            'Maße'=$s.Groups[6].Value  
            'Signatur'=$s.Groups[7].Value  
            'Auflage'=$s.Groups[8].Value  
            'Beschreibung'=$s.Groups[9].Value  
            'Zustand'=$s.Groups[10].Value  
            'Standort'=$s.Groups[11].Value  
            'Ausstellung'=$s.Groups[12].Value  
            'Bibliographie'=$s.Groups[13].Value  
        }
        # alle Spalten bereinigen (führende Leerzeichen Umbrüche etc.)
        $row | gm -MemberType NoteProperty | %{$row.($_.Name) = clean $row.($_.Name)}
        # object ausgeben
        $row
    }else{
        write-host "Datei '$($_.FullName)' entspricht nicht dem Muster!" -F Yellow  
    }
} | export-csv $export -Delimiter ";" -NoType -Encoding UTF8  
Grüße Uwe
colinardo
colinardo 15.07.2016 um 18:33:27 Uhr
Goto Top
Kommt hier noch was?

Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.