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 Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de

If you like the content and want to support me you could buy me a beer or a coffee via Litecoin or Bitcoin - thanks for reading!