gearloose 10 Geschrieben 29. Juli 2011 Melden Teilen Geschrieben 29. Juli 2011 (bearbeitet) Hallo, wollte mal kurz nachhören ob jemand was dazu weiß. Ich lasse mir aus einem Verzeichnis Dateien anzeigen die mit 7-Zip komprimiert werden sollen. Das klappt auch wunderbar nur die PS arbeitet das nicht sequentiell ab sondern parallel :-( ... der macht mir also bei 4 Dateien 4 Zip-Tasks auf. Kann man das so einrichten das die Dateien nacheinander abgearbeitet werden??? Es ist ja so wenn ich danach noch eine Befehlszeile schreibe und die ist zum Löschen der nicht gezippten Dateien gedacht macht der das auch direkt und 7-Zip greift voll ins Klo. Bedeutet der will die Daten Zippen und aber auch direkt löschen. Die Powershell bekommt das denke ich mal nicht mit was 7-Zip da gerade abarbeitet. Get-ChildItem -Path B:\...... -Exclude *.zip | ForEach-Object -Process {C:\Programme\7-Zip\7zG.exe a -tzip $_'.zip' $_} bearbeitet 29. Juli 2011 von gearloose Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 29. Juli 2011 Melden Teilen Geschrieben 29. Juli 2011 Nimm die CLI Version 7za (evtl. extra Downloaden). Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 29. Juli 2011 Melden Teilen Geschrieben 29. Juli 2011 Moin, ich kann dir dazu die PowerShell Community Extensions ans Herz legen. Dort gibt es Write-Zip Write-Zip -OutputPath "C:\tmp\zip\files.zip" -Path "C:\tmp\zip\*" Bei diesem Aufruf werden alle Files unter C:\tmp\zip in das Archiv C:\tmp\zip\files.zip geschrieben. Gucks dir mal na. Ansonsten hast du einen kleinen Denkfehler in deinem Syntax. Du rufst zu jedem File den Prozess auf, daher bekommst du x-Archive raus. dir "C:\tmp\zip\" -Recurse -Include "*.txt" | Write-Zip -OutputPath "C:\tmp\zip\files.zip" So könnte es auch gehen, du kannst halt an C:\Programme\7-Zip\7zG.exe a -tzip keine Objekte oder eine FileList übergeben. Zitieren Link zu diesem Kommentar
gearloose 10 Geschrieben 29. Juli 2011 Autor Melden Teilen Geschrieben 29. Juli 2011 Stimmt..danke :-) ich denke wirte-Zip löst da mein Problem...teste das mal aus. Dann klappt auch das anschließende Löschen der Dateien ohne zeitlich schon vorzugreifen. :D Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 29. Juli 2011 Melden Teilen Geschrieben 29. Juli 2011 Stimmt..danke :-) ich denke wirte-Zip löst da mein Problem...teste das mal aus. Dann klappt auch das anschließende Löschen der Dateien ohne zeitlich schon vorzugreifen. :D Auf die schnelle fällt mir das ein: dir "C:\tmp\zip\" -Recurse -Include "*.txt" -OutVariable files | Write-Zip -OutputPath "C:\tmp\zip\files.zip" remove-item $files Ich wüsste grad nicht, wie man das noch pipen könnte. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 29. Juli 2011 Melden Teilen Geschrieben 29. Juli 2011 Wieso nutzt man nicht die Funktion des Zippers (k.A. ob write-zip das kann) die Daten zu verschieben statt kopieren? Dabei sorgt sich der Zipper um das löschen und das nicht löschen beim Fehler (kein Platz mehr für Zip Files). Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 29. Juli 2011 Melden Teilen Geschrieben 29. Juli 2011 Wieso nutzt man nicht die Funktion des Zippers (k.A. ob write-zip das kann) die Daten zu verschieben statt kopieren? Dabei sorgt sich der Zipper um das löschen und das nicht löschen beim Fehler (kein Platz mehr für Zip Files). Weil es Write-Zip nicht kann. Sonst hätte ich das schon so eingekippt ÜBERSICHT PSCX Cmdlet: Create ZIP format archive files from pipline or parameter input. SYNTAX Write-Zip [-LiteralPath] <String[]> [[-OutputPath] <String>] [-Append] [-FlattenPaths] [-IncludeEmptyDirectories] [-Level <Nullable`1>] [-NoClobber] [-Quiet] [<CommonPar ameters>] Write-Zip -InputObject <PSObject> [[-EntryPathRoot] <String>] [-Append] [-FlattenPaths] [-IncludeEmptyDirectories] [-Level <Nullable`1>] [-NoClobber] [-Quiet] [<CommonPa rameters>] Write-Zip [-Path] <String[]> [-Append] [-FlattenPaths] [-IncludeEmptyDirectories] [-Level <Nullable`1>] [-NoClobber] [-Quiet] [<CommonParameters>] Es gibt zwar in Blogs wie hier 8 bits: Create ZIP archives with PowerShell, den Befehl -removeOriginal, der scheint aber nicht mehr verfügbar zu sein. Zitieren Link zu diesem Kommentar
gearloose 10 Geschrieben 2. August 2011 Autor Melden Teilen Geschrieben 2. August 2011 Hallo, habs getestet und write-zip klappt sequentiell :-) das löst das Problem! Problem war ja das ich extern 7-Zip aufgerufen habe und die Powershell das ja nicht nacheinander abgearbeitet hat da es ja sozusagen kein hauseigener Prozess ist. Daher ruft man bei x Dateien x Prozesse auf. Wäre auf dem Server kein Problem gewesen 32GB RAM und 2 x 4Kern Xeon. ...wenn man die Daten danach noch im Skript löschen will haut es dem 7-Zip die zu komprimierenden Daten unter den Füßen weg und es bricht ab. get-childitem -path \...\... -include *.bak | foreach-object -process {write-zip $_} Die Extensions sind ja auch schnell "installiert" einmal ins Modulverzeichnis und importiert. @Dukel: Ich hab bei 7-Zip in den Commandline Options nix gefunden womit ich Dateien nach dem Zippen entfernen könnte. Wäre sogar komfortabler gewesen und für mich letzt endlich einfach. Ich muss das mit write-zip jetzt an einige Server nachziehen und dazu noch die Powershell 2.0 installieren. Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 2. August 2011 Melden Teilen Geschrieben 2. August 2011 Freut mich, viel Spaß damit! Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 2. August 2011 Melden Teilen Geschrieben 2. August 2011 [...]Problem war ja das ich extern 7-Zip aufgerufen habe und die Powershell das ja nicht nacheinander abgearbeitet hat da es ja sozusagen kein hauseigener Prozess ist. Daher ruft man bei x Dateien x Prozesse auf. [...] Nur zur Ergänzung: Wie schon geschrieben braucht man die CLI Version von 7Zip (7za.exe), die es extra zum DL gibt. Zitieren Link zu diesem Kommentar
gearloose 10 Geschrieben 4. August 2011 Autor Melden Teilen Geschrieben 4. August 2011 Hi Dukel, hast du für die Lösung mit der CLI Version von 7zip ein kurzes Beispiel. Hab mir mal kurz die Commandos angeschaut aber ich finde da nicht wirklich was. Der Befehl "d - delete" ist ja für zip-Archive und nicht für die Dateiebene. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 4. August 2011 Melden Teilen Geschrieben 4. August 2011 Es ging um das serielle abarbeiten und nicht um das löschen (move) der Daten. Das geht leider mit 7Zip nicht. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.