lister les fichiers contenus dans un autoextractible

lister les fichiers contenus dans un autoextractible - Logiciels - Windows & Software

Marsh Posté le 10-02-2021 à 18:01:13    

Bonjour,
 
Voilà le challenge :
Je dispose d'un zip autoextractible, qui a pour but de patcher des fichiers. Appelons-le patch.exe
Je voudrais me constituer un zip de sauvegarde des fichiers concernés par le patch, avant d'appliquer le patch
De façon à pouvoir revenir en arrière en cas de pb
 
J'utilise 7-zip (mais s'il faudrait plutôt utiliser autre chose, pourquoi pas)
 
Je voudrais faire un .bat qui lancerait la commande 7z pour me créer un fichier sauvegarde.zip, et qui prendrait en entrée la liste des fichiers contenus (leurs noms) dans l'autoextractible
 
J'ai commencé par chercher comment obtenir la liste des fichiers qui sont dans le patch  (avec arborescence car il y a des sous-répertoires)
la commande 7z l -r patch.exe liste bien le contenu, mais affiche aussi les propriétés des fichiers (date, taille)
 
Exemple j'obtiens
2020-09-24 11:11:44 ....A     30138               lib\Val.pl
2020-09-24 17:00:30 ....A     40558               templates\Coll\PS.xml
2020-09-22 15:12:20 ....A       4960              bin\pbroc32.dll
2020-09-22 15:12:20 ....A      15520             bin\_oraapptv.exe
2020-09-22 15:12:20 ....A    884672             bin\chaz.exe
2019-03-01 16:27:30 ....A    319332             tools\fromezt.exe
 
Or pour pouvoir les passer en liste pour les zipper pour créer ma sauvegarde, je suppose qu'il ne faudrait que la liste des fichiers, comme :
lib\Val.pl
templates\Coll\PS.xml
bin\pbroc32.dll
bin\_oraapptv.exe
bin\chaz.exe
tools\fromezt.exe
 
 
Je ne trouve pas les options à utiliser avec 7z
 
Une aide serait la bienvenue
 
Merci

Reply

Marsh Posté le 10-02-2021 à 18:01:13   

Reply

Marsh Posté le 11-02-2021 à 01:38:37    

Bonsoir,
As-tu essayé d'extraire les fichiers avec un logiciel comme: Universal Extractor?

Reply

Marsh Posté le 11-02-2021 à 09:32:13    

Ça n'a pas l'air faisable avec 7-zip mais en powershell c'est possible :

Code :
  1. [cmdletbinding()]
  2. param(
  3.   [Parameter(Mandatory=$true)]
  4.   [string[]]$FileName
  5. )
  6. #Exit if the shell is using lower version of dotnet
  7. $dotnetversion = [Environment]::Version
  8. if(!($dotnetversion.Major -ge 4 -and $dotnetversion.Build -ge 30319)) {
  9.   write-error "You are not having Microsoft DotNet Framework 4.5 installed. Script exiting"
  10.   exit(1)
  11. }
  12. # Import dotnet libraries
  13. [Void][Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')     
  14. $FileNamePath = (gci $FileName|select FullName)
  15. if(Test-Path $FileNamePath.FullName) {
  16.   $RawFiles = [IO.Compression.ZipFile]::OpenRead($FileNamePath.FullName).Entries
  17.   foreach($RawFile in $RawFiles) {
  18.     Write-Host $RawFile.FullName
  19.   }
  20. } else {
  21.   Write-Warning "$FileName File path not found"
  22. }


Tu mets ça dans un fichier genre ListArchiveContent.ps1 et tu le lances avec en paramètre -FileName <le chemin de ton fichier>
Il ne reste plus après ça de scripter la sauvegarde des fichiers existants (je ne vais pas tout te faire non plus).


Message édité par nex84 le 11-02-2021 à 09:33:19

---------------
#TeamNoBidouille || Come to the Dark Side, we have cookies || Mangez 5 fruits et légumes par an ! || Le digital, c'est les doigts
Reply

Marsh Posté le 11-02-2021 à 12:21:50    

Bonjour à tous,
 
essaye
7z l -r /w patch.exe  
 
en dos, le /w liste en condensé

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed