Comment lister les fichiers dans un zip dans powershell?
Je suis nouveau sur powershell et en regardant la liste de tous les fichiers contenus dans des fichiers zip dans un répertoire. Je ne veux pas utiliser n'importe quel outil tiers.
Structure of the directory is
mydir > dir
a.zip
b.zip
c.zip
with each file containing files named 1.txt or 2.txt or 3.txt
I am trying to get an output in the form
a.zip:1.txt
a.zip:2.txt
b.zip:files.txt
b.zip:4.txt
c.zip:1.txt
d.zip:10.txt
et ainsi de suite.
Malheureusement, mon environnement n'est pas 4.5 mais 4.0.
J'ai pu écrire jusqu'à présent code, mais il a encore besoin de beaucoup d'analyse pour nettoyer comme décompresser donne beaucoup d'informations supplémentaires.
$packagedir="C:\Packages"
$unzipcmd = "c:\bins\unzip.exe -l"
$unmatchstr = "*Archive*"
pushd .
cd $packagedir
$filelist= Get-ChildItem -Recurse | Select-Object -ExpandProperty FullName
foreach ($item in $filelist)
{$ziplist = Invoke-Expression "$unzipcmd $item";
foreach ($item2 in $ziplist)
{
if ($item2.Contains("Archive") )
{
}
else
{
echo $item "::" $item2}}
}
popd
Est-il un moyen plus facile à analyser. Il y a beaucoup d'informations supplémentaires dans le unzip-l sortie, comme les en-têtes de Colonne, des séparateurs et des dates et les autres avant la date de chaque nom de fichier.
OriginalL'auteur user487257 | 2013-01-07
Vous devez vous connecter pour publier un commentaire.
.NET Framework 4.5 il y a une classe ZipFile qui est assez pratique.
Pour lister les entrées dans un fichier d'archive, vous pouvez l'utiliser comme ceci dans Powershell:
Mise à jour: Ce qui semble faire l'affaire :]
Consultez la mise à jour sur la question.
Pour garder le .zip fichier verrouillé, vous pouvez vous débarrasser de celui-ci après avoir lu les entrées:
$zip = [IO.Compression.ZipFile]::OpenRead($sourceFile); $entries = $zip.Entries; $zip.Dispose()
OriginalL'auteur mousio
Si vous avez la PowerShell Communauté Extensions, vous pouvez utiliser ses
Read-Archive
applet de commande.OriginalL'auteur Keith Hill
J'ai eu aussi cette question! J'ai conçu cette PS de script basé sur ce super script : https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Get-Specific-9b35352f
Ce qu'il fait est tout simplement la liste de tous les 'txt' des fichiers avec les fichiers zip trouvé!!!
L'original script copie les fichiers dans un certain dir-qui est également très utile.
Quelques remarques:
Vous devez définir les variables statiques
Assurez-vous qu'aucun répertoire variables contiennent la dernière barre oblique inverse
j'.e "répertoire" et non PAS "directory/"
Ici, il est:
OriginalL'auteur andydbzee