Ich verwende das folgende Skript, um alles vor dem 1. Januar 2013 zu archivieren:
foreach ($i in Get-ChildItem "O:\Projects” -Force -Recurse)
{
if ($i.LastWriteTime -gt ($(Get-Date).AddDays(-649)))
{
robocopy $i.FullName "A:\Operations\Projects" /Z /S /MOVE /MIR
}
}
Das Problem ist, dass das Skript nicht den genauen Verzeichnisbaum kopiert. Es wird nur der Ordner mit einer entsprechenden Datei in das Stammverzeichnis des Zielverzeichnisses kopiert.
Als Beispiel würde dies unsere Ordnerstruktur darstellen:
- Projekt A
- Zitat
- QuoteA.pdf (letzte Änderung 6/2011)
- Ausschließen
- CloseoutA.pdf (letzte Änderung 11/2011)
- Zitat
- Projekt B
- Zitat
- QuoteB.pdf (letzte Änderung 10/2012)
- Ausschließen
- CloseoutB.pdf (letzte Änderung 4/2013)
- Zitat
Mein obiges Skript würde den folgenden Zielordner ergeben:
- Zitat
- QuoteA.pdf
- QuoteB.pdf
- Ausschließen
- CloseoutA.pdf
Das obige Beispiel ist sehr einfach. Einige der Dateien sind 8 oder 9 Ordner tief. Es gibt fast 30.000 Ordner im Quellverzeichnis. Ich benötige den vollständigen Pfad der entsprechenden Datei, um beim Verschieben intakt zu bleiben. Wie kann ich das erreichen?