Der eleganteste Weg, ein Verzeichnis aus einer Zip-Datei mit PowerShell zu extrahieren?

8

Ich muss ein bestimmtes Verzeichnis aus einer Zip-Datei entpacken.

Wie zum Beispiel das Verzeichnis 'test \ etc \ script' aus der Zip-Datei 'c: \ tmp \ test.zip' extrahieren und in c: \ tmp \ output \ test \ etc \ script einfügen.

Der folgende Code funktioniert, hat aber zwei Macken:

  • Ich muss rekursiv das Verzeichnis ('script') in der zip-Datei finden (Funktion finditem), obwohl ich den Pfad bereits kenne ('c: \ tmp \ test.zip \ test \ etc \ script')

  • Mit CopyHere muss ich das Zielverzeichnis bestimmen, speziell den 'test \ etc' Teil manuell

Irgendwelche besseren Lösungen? Danke.

Der Code:

%Vor%     
Simon de Kraa 10.07.2014, 09:10
quelle

3 Antworten

7

Soweit der Speicherort des Ordners in einer Zip-Datei bekannt ist, kann der ursprüngliche Code vereinfacht werden:

%Vor%     
Roman Kuzmin 10.07.2014, 16:08
quelle
9

Ich weiß nicht, über die meisten elegant, aber mit .Net 4.5 installiert können Sie die ZipFile Klasse aus dem System.IO.Compression Namespace:

%Vor%

Der Parameter 3 rd von ExtractToFile() kann weggelassen werden. Wenn vorhanden, definiert es, ob vorhandene Dateien überschrieben werden oder nicht.

    
Ansgar Wiechers 10.07.2014 10:49
quelle
6

Windows PowerShell 5.0 (in Windows 10 enthalten) unterstützt nativ das Extrahieren von ZIP-Dateien mit Expand-Archive Cmdlet:

%Vor%     
Ivan Zhakov 10.02.2016 16:04
quelle

Tags und Links