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 „—————————————————————————————-“

Print Friendly, PDF & Email
März 12, 2014

Schlagwörter: , , , , , , ,