31 July 2011 HowTo, Powershell, Unzip Robert Muehsig

Ich hatte einen Ordner in dem waren sehr viele Zip-Archive gespeichert. Diese wollte ich nun alle in ein Verzeichnis entpacken. Das geht (nach etwas suchen) mit der Powershell doch recht einfach und sollte selbsterklärend sein. Das Script stammt zu 100% von http://www.snowland.se/ (da ich nicht so ein guter Powershell Hacker bin Zwinkerndes Smiley )

Achtung: Der Unzip Ordner muss bereits erstellt sein, ansonsten kommt ein Fehler.

PARAM (
    [string] $ZipFilesPath = "X:\Somepath\Full\Of\Zipfiles",
    [string] $UnzipPath = "X:\Somepath\to\extract\to"
)
 
$Shell = New-Object -com Shell.Application
$Location = $Shell.NameSpace($UnzipPath)
 
$ZipFiles = Get-Childitem $ZipFilesPath -Recurse -Include *.ZIP
 
$progress = 1
foreach ($ZipFile in $ZipFiles) {
    Write-Progress -Activity "Unzipping to $($UnzipPath)" -PercentComplete (($progress / ($ZipFiles.Count + 1)) * 100) -CurrentOperation $ZipFile.FullName -Status "File $($Progress) of $($ZipFiles.Count)"
    $ZipFolder = $Shell.NameSpace($ZipFile.fullname)
 
    $Location.Copyhere($ZipFolder.items(), 1040) # 1040 - No msgboxes to the user - http://msdn.microsoft.com/en-us/library/bb787866%28VS.85%29.aspx
    $progress++
}

 

Wer das Script im Adminmodus startet, bekommt sogar ein Fenster mit Fortschrittsanzeige.


Written by Robert Muehsig

Software Developer - from Saxony, Germany - working on primedocs.io. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de