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-ID: 247530

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

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

emeriks
emeriks 27.08.2014 aktualisiert um 09:24:57 Uhr
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
Gersen
Gersen 27.08.2014 um 09:34:22 Uhr
Goto Top
Hallo,

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

Gruß,
Gersen
colinardo
colinardo 27.08.2014 aktualisiert um 10:35:27 Uhr
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
Andreasde95
Andreasde95 27.08.2014 aktualisiert um 13:24:06 Uhr
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
colinardo
colinardo 27.08.2014 aktualisiert um 13:27:22 Uhr
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
emeriks
emeriks 27.08.2014 um 13:26:55 Uhr
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.
Andreasde95
Andreasde95 27.08.2014 aktualisiert um 13:27:54 Uhr
Goto Top
wie mache ich das den ?
Andreasde95
Andreasde95 27.08.2014 um 13:28:18 Uhr
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;)
colinardo
colinardo 27.08.2014 um 13:29:08 Uhr
Goto Top
Zitat von @Andreasde95:

wie mache ich das den ?
hää????????
Andreasde95
Andreasde95 27.08.2014 um 13:30:25 Uhr
Goto Top
auf den code verweisen
emeriks
emeriks 27.08.2014 um 13:32:39 Uhr
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.
colinardo
colinardo 27.08.2014 aktualisiert um 13:34:02 Uhr
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)
Andreasde95
Andreasde95 27.08.2014 aktualisiert um 13:40:08 Uhr
Goto Top
bei directroy kann ich einzele datein zippen?

und muss ich den ordner davor anlegen lassen als Zip odner ?
colinardo
colinardo 27.08.2014 um 13:40:55 Uhr
Goto Top
Zitat von @Andreasde95:
bei directroy kann ich einzele datein zippen?
nein, ich mach dir gleich mal ein Beispiel für einzelne Files
jsysde
jsysde 27.08.2014 um 13:47:44 Uhr
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
colinardo
colinardo 27.08.2014 um 13:48:28 Uhr
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
Andreasde95
Andreasde95 27.08.2014 um 13:57:12 Uhr
Goto Top
danke super das klappt ;)
colinardo
colinardo 27.08.2014 um 14:03:48 Uhr
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.