Aufgrund einer Fehleranalyse sollte eine Datei einer Software aus einer Ordnerstruktur kopiert werden. Leider kam bei der Suche nach der Datei heraus, dass sich in jedem Projektordner, welches diese Software anlegt, eine entsprechende Datei erzeugt wird.
Nun mussten alle Dateien kopiert werden, was mit dem selben Dateinamen leider nicht einfach möglich ist. Somit kam ich zu dem Schluss die Dateien mit der vorhandenen Ordnerstruktur kopieren zu wollen.
Da es sich um einige Projektordner handelte, wurde von mir das folgende Powershell-Skript entwickelt, welches die Datei mit der Ordnerstruktur zur Verfügung stellt
# Verzeichnis, ab dem Rekursiv nach der Datei gesucht wird $Suchverzeichnis = "C:\Program files\Database\Log\Projects\" # Datei, welche gesucht wird $Datei = "start.act" # Verzeichnis, wo die Daten erzeugt und kopiert werden soll $Zielverzeichnis = "C:\analyse\" #Dateiermittlung $dat = Get-ChildItem -Path $Suchverzeichnis -Recurse -Include $Datei # Array erstellen foreach ($file in $dat) { # Ermittelter Pfad & Dateiname in Kleinbuchstabeln wandeln $Objekt = ($file.Fullname).toLower() # Suchverzeichnis in Kleinbuchstaben wandeln $Startverzeichnis =$Suchverzeichnis.toLower() # Entfernung des Suchverzeichnis aus dem Array $Struktur = $Objekt.Replace($Startverzeichnis,"$null") # Entfernung des Dateinamens aus dem Array $Ordner = $Struktur.Replace($Datei,"$null") #Zusammensatzung für Skriptnutzung $Zielpfad = $Zielverzeichnis+$Ordner # Erstellung der Verzeichnisstruktur New-Item $Zielpfad -itemtype directory -force # Kopieren der Datei in die entsprechende Struktur Copy-Item ($file.fullname) -destination ($Zielpfad) -force }
Mit dem Skript werden die benötigten Ordner angelegt und die ermittelten Dateien entsprechend kopiert, um das laufende System nicht zu stören.