none
Zip Dateien und Powershell RRS feed

  • Frage

  • Hallo zusammen,

    ich benötige Hilfe bei folgendem Kontext. Für den Import von Bilddateien (ca. 4000 Stück) in ein ERP System benötige ich jede einzelne dieser Dateien in jeweils eine .zip Datei verpackt, sprich 4000 .zip Dateien. Da dies manuell ein zu großer Aufwand wäre dachte ich mir man könnte dies mit Powershell und der 7-Zip Schnittstelle machen. Da ich in Powershell nicht so versiert bin, habe ich im Internet einmal nach Hilfe gesucht und folgenden Codeschnipsel gefunden:

    $Source = 'C:\Users\username\Desktop\Zip\'
    $Target = 'C:\Users\username\Desktop\Zip\test.zip'

    & "$env:ProgramFiles\7-Zip\7z.exe" @('a','-mx=9',$Target,$Source)

    Dies funktioniert soweit ganz gut, allerdings packt das den ganzen Ordner in eine .zip. Wie müsste man dies jetzt abändern um den Befehl quasi einmal für jede Datei ausführen zu können und bei dem Dateinamen für die .zip den selben wie für das Bild zu wählen? Ich dachte da an so eine Art for-each Schleife, weiß allerdings nicht wie das in Powershell zu realisieren ist.

    Ich wäre für jede Hilfe dankbar.

    Mit freundlichen Grüßen

    Jan Ladwig

    Montag, 21. November 2016 10:43

Antworten

  • Hallo Jan,

    pro Datei ein Zip-Archiv mit dem Namen der Datei:

    $files = (Get-ChildItem 'C:\Users\username\Desktop\Zip\' -File -Recurse)
    foreach ($file in $files)
        {
        $Target = "C:\Users\username\Desktop\Zip\Archive\" + $file.Name + ".zip"
        & "$env:ProgramFiles\7-Zip\7z.exe" @('a','-mx=9',$Target,$file.FullName)
        }



    Freundliche Grüße

    Sandro
    MCSA: Windows Server 2012
    Fachinformatiker Fachrichtung Systemintegration (IHK, 07/2013)



    • Als Antwort markiert Jan Ladwig Dienstag, 22. November 2016 07:51
    Montag, 21. November 2016 19:38

Alle Antworten

  • Hallo Jan,

    Foreach($File in $Source)

    {

    Dein Code

    }

    Du musst aber noch etwas mit Get-Childitem oder der gleichen in deine Source einbauen.

    schau mal bei http://www.computerperformance.co.uk/

    da sind immer sehr gute Beispiele.

    Leider kann ich das Script gerade nicht selber bauen :(

    Gruß

    Carsten

    Montag, 21. November 2016 10:50
  • PowerShell v5.0 adds Compress-Archive and Expand-Archive cmdlets. 


    CH

    • Als Antwort vorgeschlagen Evgenij Smirnov Montag, 21. November 2016 19:00
    Montag, 21. November 2016 18:51
  • müsste auch ohne Powershell gehen 

    Schreibe folgende Programm-Zeile in Notepad: for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\"

    nicht getestet, nur gegoogelt

    http://de.wikihow.com/Mehrere-komprimierte-Ordner-mit-7Zip-auf-einmal-erstellen


    CH

    Montag, 21. November 2016 18:54
  • Hallo Jan,

    pro Datei ein Zip-Archiv mit dem Namen der Datei:

    $files = (Get-ChildItem 'C:\Users\username\Desktop\Zip\' -File -Recurse)
    foreach ($file in $files)
        {
        $Target = "C:\Users\username\Desktop\Zip\Archive\" + $file.Name + ".zip"
        & "$env:ProgramFiles\7-Zip\7z.exe" @('a','-mx=9',$Target,$file.FullName)
        }



    Freundliche Grüße

    Sandro
    MCSA: Windows Server 2012
    Fachinformatiker Fachrichtung Systemintegration (IHK, 07/2013)



    • Als Antwort markiert Jan Ladwig Dienstag, 22. November 2016 07:51
    Montag, 21. November 2016 19:38
  • Hallo Sandro,

    das hat prima funktioniert. Vielen Dank!

    Gruß

    Jan

    Dienstag, 22. November 2016 07:51