andreasde95
Goto Top

Datei mit Powershell Skript Komprimieren ohne Zusatzprogramm

Hallo
ich habe ein Problem ich möchte eine Datei erstmal nur eine Bestimmte zum Test (später mal alle mit einer besonderen Endung (.evt)) Komprimieren lassen.

Dies möchte ich mit Powershell gestalten bedingung ist aber kein 7Zip oder sonstiges zu Nutzen.

Hat jemand hierfür eine Idee wie man das Gestalten kann?

hab bis jetzt das:

Add-Type -AssemblyName System.IO.Compression.FileSystem

Get-ChildItem -Recurse 'F:\Test\Test\b.docx' |
Write-Zip -OutputPath 'S:\Test\Test.zip' -IncludeEmptyDirectories -EntryPathRoot 'F:\Test\Test\b.docx'

kommt aber leider eine fehlermeldung das Write-Zip nicht kennt

Write-Zip : Die Benennung "Write-Zip" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren
Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie
den Vorgang.
In Zeile:4 Zeichen:1

back-to-topWrite-Zip -OutputPath 'S:\Test\Test.zip' -IncludeEmptyDirectories -EntryPathRoot ...

back-to-top~~~~~~~~~

+ CategoryInfo : ObjectNotFound: (Write-Zip:String) , CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Mit freundlichen Grüßen
Andreas

Content-Key: 247530

Url: https://administrator.de/contentid/247530

Printed on: April 18, 2024 at 09:04 o'clock

Member: emeriks
emeriks Aug 27, 2014 updated at 07:24:57 (UTC)
Goto Top
Hi,
also Goggle sagt z.B. das: http://www.codeproject.com/Articles/641275/Create-zip-files-using-Power ...
E.

Edit
gesucht mit: powershell move file to zip folder
Member: Gersen
Gersen Aug 27, 2014 at 07:34:22 (UTC)
Goto Top
Hallo,

hier ist auch 'ne hübsche, kleine Funktion dafür beschrieben.

Gruß,
Gersen
Member: colinardo
colinardo Aug 27, 2014 updated at 08:35:27 (UTC)
Goto Top
Für diesen Code sei noch zu erwähnen das die Klasse System.IO.Compression.ZipFile erst ab .NET Framework 4.5 verfügbar ist.

Grüße Uwe
Member: Andreasde95
Andreasde95 Aug 27, 2014 updated at 11:24:06 (UTC)
Goto Top
kannst du mir sagen wie ich dieses modul laden kann ?

ich hab es damit probiert

Add-Type -AssemblyName System.IO.Compression.FileSystem


Mit freundlichen Grüßen
Andreas
Member: colinardo
colinardo Aug 27, 2014 updated at 11:27:22 (UTC)
Goto Top
Zitat von @Andreasde95:
ich hab es damit probiert

Add-Type -AssemblyName System.IO.Compression.FileSystem
du brauchst diese beiden Klassen:
Add-Type -AssemblyName System.IO.Compression
Add-Type -AssemblyName System.IO.Compression.Filesystem
aber du benötigst natürlich wie gesagt NET 4.5
Member: emeriks
emeriks Aug 27, 2014 at 11:26:55 (UTC)
Goto Top
Das ist kein Modul sondern eine .Net-Klasse! Du musst einfach nur im Code darauf verweisen, wie in dem Beispiel von Codeproject.
E.
Member: Andreasde95
Andreasde95 Aug 27, 2014 updated at 11:27:54 (UTC)
Goto Top
wie mache ich das den ?
Member: Andreasde95
Andreasde95 Aug 27, 2014 at 11:28:18 (UTC)
Goto Top
ich probiere es gleich aus
kannst du mir noch sagen ob des der richtige ansatz ist den ich oben verfolge?

ja das ist mir bewusst;)
Member: colinardo
colinardo Aug 27, 2014 at 11:29:08 (UTC)
Goto Top
Zitat von @Andreasde95:

wie mache ich das den ?
hää????????
Member: Andreasde95
Andreasde95 Aug 27, 2014 at 11:30:25 (UTC)
Goto Top
auf den code verweisen
Member: emeriks
emeriks Aug 27, 2014 at 11:32:39 (UTC)
Goto Top
Hast Du Dir das Beispiel überhaupt angesehen? Bzw. kannst Du es "lesen" (verstehen)?

Auszug:

...
[Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" );  
[System.IO.Compression.ZipFile]::CreateFromDirectory($target, $zip_to, $Compression_Level, $IncludeBaseFolder);
...

E.
Member: colinardo
colinardo Aug 27, 2014 updated at 11:34:02 (UTC)
Goto Top
Also hier nochmal für absolute Anfänger:
ganzen Ordner zippen:
# benötigt wird mindestens NET-Framework 4.5 und Powershell 3.0 
$pathToCompress = "C:\temp"  
$pathZipFile = "C:\test.zip"  
Add-Type -AssemblyName System.IO.Compression.FileSystem
[System.IO.Compression.ZipFile]::CreateFromDirectory($pathToCompress,$pathZipFile)
Member: Andreasde95
Andreasde95 Aug 27, 2014 updated at 11:40:08 (UTC)
Goto Top
bei directroy kann ich einzele datein zippen?

und muss ich den ordner davor anlegen lassen als Zip odner ?
Member: colinardo
colinardo Aug 27, 2014 at 11:40:55 (UTC)
Goto Top
Zitat von @Andreasde95:
bei directroy kann ich einzele datein zippen?
nein, ich mach dir gleich mal ein Beispiel für einzelne Files
Member: jsysde
jsysde Aug 27, 2014 at 11:47:44 (UTC)
Goto Top
Moin.

Ich häng mich mal mit ner Zwischenfrage hier rein:
Wie gut oder schlecht ist denn Komprimierungsrate hierbei?

Nutze derzeit 7-Zip als Packer, lässt sich ja prima aus jedweder CMD oder PS antriggern, und wäre interessiert an einem Vergleich.
Gracias. face-wink

Cheers,
jsysde
Member: colinardo
colinardo Aug 27, 2014 at 11:48:28 (UTC)
Goto Top
Einzelne Dateien zippen:
# benötigt wird mindestens NET-Framework 4.5 und Powershell 3.0 
Add-Type -AssemblyName System.IO.Compression
Add-Type -AssemblyName System.IO.Compression.FileSystem

$fileToCompress = "C:\temp\datei.csv"  
$pathZipFile = "c:\test.zip"  

$zip = [System.IO.Compression.ZipFile]::Open($pathZipFile,[System.IO.Compression.ZipArchiveMode]::Update)
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($zip,$fileToCompress,[System.IO.Path]::GetFileName($fileToCompress))
$zip.Dispose()
Grüße Uwe
Member: Andreasde95
Andreasde95 Aug 27, 2014 at 11:57:12 (UTC)
Goto Top
danke super das klappt ;)
Member: colinardo
colinardo Aug 27, 2014 at 12:03:48 (UTC)
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.