Dateistruktur mit Powershell auswerten
N'Abend @all,
ich möchte mich mal auf ein neues Gebiet begeben, die Powershell.
Und ich will folgendes Problem unbedingt mit der PS lösen....
Ich will eine bestehende Verzeichnisstruktur in eine TXT-Datei einlesen und diese dann in ACCESS importieren.
Die Struktur sieht wie folgt aus:
"Verzeichnis"/"Unterverzeichnisbezeichnung"/"Dateiname.txt"
...
DatenName
|--- Datenname - Detail
|---Detail - Unterdetail01.txt
|---Detail - Unterdetail02.txt
|---Detail - Unterdetail03.txt
...
DatenName/Datename - Detail/Detail - Unterdetail01.txt
DatenName/Datename - Detail/Detail - Unterdetail02.txt
DatenName/Datename - Detail/Detail - Unterdetail03.txt
Der Bindestrich ist wirklich in den Verzeichnis- und Dateinamen enthalten.
Eine Textdatei die mir zum einlesen helfen würde, könnte inhaltlich so aussehen:
Datenname - Detail - Unterdetail01.txt
Datenname - Detail - Unterdetail02.txt
Datenname - Detail - Unterdetail03.txt
Ich selber habe erste Erfolge mit
Get-ChildItem -Path D:\Datenpfad -File -Recurse -Include *.txt >> D:\Alles.txt
sieht wie folgt aus:
Verzeichnis: F:\Datenpfad\Datenname\Datenname - Detail
Mode LastWriteTime Length Name
------------- ------ ----
-a---- 30.09.2017 21:25 15568744 01 - Detail - Unterdetail01.txt
-a---- 30.09.2017 21:25 10404026 02 - Detail - Unterdetail02.txt
Mit dieser TXT-Datei(struktur) tue ich mich mit dem Datenimport in ACCESS schwer,
es sollen dort genaue Master/Detailbeziehungen aufgebaut werden...
Was mir nicht gelingen will ist folgendes: Während der Ausführung des Scriptes die Inhalte
des Verzeichnis- und des Dateinamens in seine Bestandteile zu zerlegen
und sie dann neu wie gewünscht zusammenzustellen.
OK - erst mal genug für heute Abend.
Ich hoffe es ist verständlich.
Danke für Eure Hilfe
BM
ich möchte mich mal auf ein neues Gebiet begeben, die Powershell.
Und ich will folgendes Problem unbedingt mit der PS lösen....
Ich will eine bestehende Verzeichnisstruktur in eine TXT-Datei einlesen und diese dann in ACCESS importieren.
Die Struktur sieht wie folgt aus:
"Verzeichnis"/"Unterverzeichnisbezeichnung"/"Dateiname.txt"
...
DatenName
|--- Datenname - Detail
|---Detail - Unterdetail01.txt
|---Detail - Unterdetail02.txt
|---Detail - Unterdetail03.txt
...
DatenName/Datename - Detail/Detail - Unterdetail01.txt
DatenName/Datename - Detail/Detail - Unterdetail02.txt
DatenName/Datename - Detail/Detail - Unterdetail03.txt
Der Bindestrich ist wirklich in den Verzeichnis- und Dateinamen enthalten.
Eine Textdatei die mir zum einlesen helfen würde, könnte inhaltlich so aussehen:
Datenname - Detail - Unterdetail01.txt
Datenname - Detail - Unterdetail02.txt
Datenname - Detail - Unterdetail03.txt
Ich selber habe erste Erfolge mit
Get-ChildItem -Path D:\Datenpfad -File -Recurse -Include *.txt >> D:\Alles.txt
sieht wie folgt aus:
Verzeichnis: F:\Datenpfad\Datenname\Datenname - Detail
Mode LastWriteTime Length Name
------------- ------ ----
-a---- 30.09.2017 21:25 15568744 01 - Detail - Unterdetail01.txt
-a---- 30.09.2017 21:25 10404026 02 - Detail - Unterdetail02.txt
Mit dieser TXT-Datei(struktur) tue ich mich mit dem Datenimport in ACCESS schwer,
es sollen dort genaue Master/Detailbeziehungen aufgebaut werden...
Was mir nicht gelingen will ist folgendes: Während der Ausführung des Scriptes die Inhalte
des Verzeichnis- und des Dateinamens in seine Bestandteile zu zerlegen
und sie dann neu wie gewünscht zusammenzustellen.
OK - erst mal genug für heute Abend.
Ich hoffe es ist verständlich.
Danke für Eure Hilfe
BM
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6799569217
Url: https://administrator.de/contentid/6799569217
Ausgedruckt am: 21.11.2024 um 15:11 Uhr
4 Kommentare
Neuester Kommentar
Get-ChildItem d:\Datenpfad -File -Recurse -Filter *.txt | %{"$($_.Directory.Name) -$(($_.Name -split "-")[-1])"} | set-content d:\alles.txt
Ne CSV wäre auch denkbar ...
Get-ChildItem -Path D:\Datenpfad -File -Recurse -Filter *.txt | select @{n='Root';e={$_.Directory.Parent.Name}},@{n='DirectoryName';e={$_.Directory.Name}},Name | export-csv d:\alles.csv -Delimiter ";" -NoType -Encoding UTF8
Cheers briggs
%{} = Abkürzung für Foreach-Object
$_.Directory.Name = Name des Ordners in dem die Datei enthalten ist
($_.Name -split "-")[-1] = Splitet den Dateinamen anhand des Bindestrichs und aus dem Zurückgegebenen Array nimmt es den letzten Index, also bspw. das " Unterdetail01.txt".
Die $() innerhalb des Strings führen die darin enthaltenen Befehle aus.
Das ganze als String mit " -" verkettet, und via Pipe (|) an Set-Content übergeben welches alles in eine Datei schreibt, feddisch.
$_.Directory.Name = Name des Ordners in dem die Datei enthalten ist
($_.Name -split "-")[-1] = Splitet den Dateinamen anhand des Bindestrichs und aus dem Zurückgegebenen Array nimmt es den letzten Index, also bspw. das " Unterdetail01.txt".
Die $() innerhalb des Strings führen die darin enthaltenen Befehle aus.
Das ganze als String mit " -" verkettet, und via Pipe (|) an Set-Content übergeben welches alles in eine Datei schreibt, feddisch.