Verzeichnisse mit bestimmtem Namen zippen und benennen
Ein Kollege trat kürzlich an mich heran, mit der Bitte ihm dabei zu helfen bestimmte Ordner einer Ordnerstruktur zu zippen und an einen Zielort zu kopieren.
Das folgende Powershell Script liest aus dem Startpath alle Ordner ein und zippt die die „FINAL Documentation“ heissen. Die erstellte ZIP Datei soll die Nummer des Auftrages bekommen.
Die Dateien sind im Quellpfad nach folgendem Prinzip abgelegt:
Y:\2011\18200002 Auftrag xyz Firma abc\04 Dokumentation\FINAL Documentation
Die ZIP Datei bekommt in diesem Falle den Namen „1820002 Final Documentation.zip“, in dem vom Zielordner zwei Ebenen zurückgegangen wird, und anschließend per Substring die ersten 7 Zeichen eingelesen werden.
$Startpath = „Y:\2011“
$Destinationpath = „C:\temp\Archiv2“
$LogFile = „c:\temp\ZIPDir.log“Function LogWrite
{
Param ([string]$logstring)Add-content $Logfile -value $logstring
}[Reflection.Assembly]::LoadWithPartialName( „System.IO.Compression.FileSystem“ )
$ExcludeBaseDirectory = $false
$compressionLevel= [System.IO.Compression.CompressionLevel]::OptimalLogWrite „$($MyInvocation.MyCommand.Path)“
LogWrite (get-date)
LogWrite „—————————————————————————————-“
LogWrite „Folgende Ordner wurden unter $Destinationpath angelegt:“
LogWrite „—————————————————————————————-“get-childitem $Startpath -attributes D -recurse -include „FINAL Documentation“ |
foreach {
$Folder = $_.fullName
$DestinationName=(((get-item $_.FullName ).parent.parent.Name).Substring(0,7))
[System.IO.Compression.ZipFile]::CreateFromDirectory($Folder, „$Destinationpath\$DestinationName Final Documentation.zip“,$compressionLevel,$ExcludeBaseDirectory)
LogWrite „$DestinationName Final Documentation.zip angelegt“}
LogWrite „—————————————————————————————-“

Timo Skupin, Jahrgang 1980, arbeitet bereits seit über 20 Jahren in der IT, aktuell als IT-Leiter eines mittelständischen Industrie Unternehmens. Zu seinen Spezialgebieten gehören neben der IT-Sicherheit und der Automatisierung von Abläufen, bevorzugt mit Powershell, die individuelle Problemlösung und Optimierung von IT-Arbeitsprozessen. In seiner Freizeit beschäftigt sich der leidenschaftliche Film-, Serien- und Reisefan gerne mit dem Raspberry Pi und dem Thema Heimautomatisierung.