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:

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-Key: 309123

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

Printed on: April 16, 2024 at 08:04 o'clock

Member: StefanKittel
StefanKittel Jul 07, 2016 at 05:45:41 (UTC)
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
Member: TlBERlUS
TlBERlUS Jul 07, 2016 updated at 08:43:17 (UTC)
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.
Member: colinardo
colinardo Jul 07, 2016 updated at 09:06:33 (UTC)
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:
# 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
Member: colinardo
colinardo Jul 15, 2016 at 16:33:27 (UTC)
Goto Top
Kommt hier noch was?

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