Verzeichnistiefe durchgehen und letztes Verzeichnis merken und Inhalt kopieren
Moin, ich mal wieder ....
ich habe eine Verzeichnisstruktur (Wird durch Export leider so vorgegeben) und will nur die Verzeichnisse mit Dateninhalt (z.B. *.pdf) in ein anderes Verzeichnis ausleitung mit dem letzten Verzeichnisnamen in denen sich die Daten befanden.
z.B.
Ordner1 (Leer)
|_____Ordner2(Leer)
|____Ordner3(Leer)
|____Ordner4(Gefüllt mit Dateien)
Das Ziel soll dann so aussehen :
TempOrdner(Existiert bereits)
|___Ordner4(Mit den Dateien)
Wobei die exportierte Ordnerstruktur auch tiefe sein kann als oben angeben.
Mit dem PS-Script funktioniert dies schon ganz gut, leider weiß ich nicht wie ich den Ordnernamen Merke und Schreibe in denen er die Dateien gefunden hatte.
Die Dateien liegen also "lose", ohne Verzeichnisnamenbezug im Ordner "TempOrdner"
Wichtig wäre das eigentlich nur das Verzeichnis dort steht in denen sich auch die Dateien befanden.
ich habe eine Verzeichnisstruktur (Wird durch Export leider so vorgegeben) und will nur die Verzeichnisse mit Dateninhalt (z.B. *.pdf) in ein anderes Verzeichnis ausleitung mit dem letzten Verzeichnisnamen in denen sich die Daten befanden.
z.B.
Ordner1 (Leer)
|_____Ordner2(Leer)
|____Ordner3(Leer)
|____Ordner4(Gefüllt mit Dateien)
Das Ziel soll dann so aussehen :
TempOrdner(Existiert bereits)
|___Ordner4(Mit den Dateien)
Wobei die exportierte Ordnerstruktur auch tiefe sein kann als oben angeben.
Mit dem PS-Script funktioniert dies schon ganz gut, leider weiß ich nicht wie ich den Ordnernamen Merke und Schreibe in denen er die Dateien gefunden hatte.
Die Dateien liegen also "lose", ohne Verzeichnisnamenbezug im Ordner "TempOrdner"
get-childitem -path "I:\Daten\StoreTemp\*.*" -recurse -file | copy-item -destination "i:\Daten\test" -Force -verbose
Wichtig wäre das eigentlich nur das Verzeichnis dort steht in denen sich auch die Dateien befanden.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1669289068
Url: https://administrator.de/forum/verzeichnistiefe-durchgehen-und-letztes-verzeichnis-merken-und-inhalt-kopieren-1669289068.html
Ausgedruckt am: 22.12.2024 um 08:12 Uhr
12 Kommentare
Neuester Kommentar
p.s. Robocopy würde dir das auch ohne die PS machen
$quelle = "I:\Daten\StoreTemp"
$ziel = 'I:\Daten\test'
Get-ChildItem $quelle -File -Recurse -Force | copy-item -Destination {(md ($_.DirectoryName -replace [regex]::Escape($quelle),$ziel) -Force).Fullname}
robocopy "I:\Daten\StoreTemp" "I:\Daten\test" /S /COPYALL /R:5 /W:5
robocopy /?
eingeben und lesen ...
Hallo,
oder einfacher, wenn auch weniger elegant.
Alles kopieren inklusive leerer Verzeichnisse.
Danach alle verzeichniss löschen (rd verzeichnis ohne /s /q). Dabei werden dann nur leere Verzeichnisse gelöscht.
Oder halt nicht batch/cmd verwenden.
Mit VBA/Python/PHP/xyz kann man viel flexibler solche Dinge erledigen.
Stefan
oder einfacher, wenn auch weniger elegant.
Alles kopieren inklusive leerer Verzeichnisse.
Danach alle verzeichniss löschen (rd verzeichnis ohne /s /q). Dabei werden dann nur leere Verzeichnisse gelöscht.
Oder halt nicht batch/cmd verwenden.
Mit VBA/Python/PHP/xyz kann man viel flexibler solche Dinge erledigen.
Stefan
Zitat von @Crashzero:
Bei dem PS erhalte ich in I:\Daten\test nach wie vor die komplette Verzeichnisstruktur mit Leerverzeichnissen.
Nö, funktioniert hier einwandfrei, dann sind deine Verzeichnisse wohl doch nicht ganz leer ( haben versteckte Dateien).Bei dem PS erhalte ich in I:\Daten\test nach wie vor die komplette Verzeichnisstruktur mit Leerverzeichnissen.
Willst du versteckte Dateien ignorieren musst du den -Force Parameter bei Get-Childitem weglassen denn der bezieht versteckte Dateien mit ein.
Works as designed ...
(So kann es zu solchen Mißverständnissen führen)
Erst einmal: Ein Ordner der andere Ordner/Dateien egal welcher tiefe enthält ist per Definition auch nicht leer!Wenn du das so haben willst wie im letzten Post angegeben reicht
$quelle = "I:\Daten\StoreTemp"
$ziel = 'I:\Daten\test'
Get-ChildItem $quelle -Directory -Recurse | ?{$_.GetFiles().Count -gt 0} | copy-item -Destination $ziel -recurse -force
Du siehst, exakte Definition ist hier sehr wichtig. Bitte das nächste mal berücksichtigen.
Zitat von @Crashzero:
Soweit klapp, allerdings sind die Dateien nicht mitgekommen .... Nur das korrekte, leere, Verzeichnis ist im Zielordner vorhanden.
Du warst zu schnell, hatte kurz korrigiert, nochmal nehmen.Soweit klapp, allerdings sind die Dateien nicht mitgekommen .... Nur das korrekte, leere, Verzeichnis ist im Zielordner vorhanden.