ashnod
Goto Top

Textdateien automatisiert bereinigen und in neue Datei überführens mittel PS-Script

Hallo,

für die Dauerscripter sicher ein einfaches face-wink

Ich habe ein Verzeichnis in das Textdateien (z.B. 202106.txt) mit Daten für diesen Monat geschrieben werden, diese sollen zusammengeführt und als Exeldatenquelle genutzt werden.

Aufbau der Textdatei
Header 12 Zeilen sollen weg

Daten für spätere Exelverarbeitung
DatenA DatenB DatenC DatenD

aus den Dateien müssen immer die ersten 12 Zeilen raus und ggf Leerzeieln raus..

das bekomme ich mit
(gc $file | select -Skip 12 |  ? {$_.trim() -ne "" } ) | sc $file   

hin, aber für die automatisierung auf Dateiebene fehlt mir so ziemlich alles ...

Die Monatsdatei soll in ein Verzeichnis gelegt werden dann soll der Anwender ein Powershell script starten

die Originaldatei soll in ein Verzeichnis \Exportdaten verschoben werden

die aufbereitete Datei ohne die 12 Zeilen soll in ein Verzeichnis \RawDaten aus dem Originaldateinamen von z.B. 202106.txt soll dabei 202106raw.txt werden

aus dem Verzeichnis \RawDaten sollen nun alle Dateien in eine zusammengeführt werden, damit in Exel dann der gesamten Datenbestand weiterverarbeitet werden kann...

Soderl hoffe das war verständlich.

Beste Grüße

Content-ID: 954597733

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

Ausgedruckt am: 21.11.2024 um 19:11 Uhr

148934
Lösung 148934 09.07.2021 aktualisiert um 16:33:07 Uhr
Goto Top
$source = "E:\Data\Quelle"  
$exportdata = "E:\Data\Exportdaten"  
$raw = "E:\Data\RawDaten"  
Get-Childitem $source -File -Filter *.txt | %{
    Get-Content $_.Fullname | select -Skip 12 | ?{$_ -notmatch '^\s*$'} | Set-Content "$raw\$($_.Basename)raw.txt"  
    $_ | move-item -Destination $exportdata
}
Get-Content "$raw\*.txt" | Set-Content "$raw\merged.txt"  
Oder wenn die einzelnen Raw Files nur dein gedanklicher Zwischenschritt waren und diese hinterher nicht noch benötigt werden kann der Zwischenspeicherschritt auch entfallen
$source = "E:\Data\Quelle"  
$exportdata = "E:\Data\Exportdaten"  
$raw = "E:\Data\RawDaten"  
Get-Childitem $source -File -Filter *.txt | %{ Get-Content $_.Fullname | select -Skip 12 | ?{$_ -notmatch '^\s*$'} } | set-content "$raw\merged.txt"  
move-item "$source\*.txt" -Destination $exportdata  

aber für die automatisierung auf Dateiebene fehlt mir so ziemlich alles ..
Dann doch vielleicht erst mal etwas dazu lesen
Get-Childitem
Move-Item
Foreach-Object
ashnod
ashnod 12.07.2021 aktualisiert um 08:18:06 Uhr
Goto Top
Vielen Dank auch für die Info-Links ... grandios face-wink

Iss leider so, wenn man da nur alle Jahrzehnte was machen muss ... befürchte aber das ich da jetzt wieder öfter mal ran muss ... also einlesen hilft auf jeden Fall wenn nicht alles immer Vorgestern sein muss ...

Beste Grüße