JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Voir le contenu d'un fichier .zip Mar 29 Nov 2016 - 21:43 | |
| Une petite sub qui permet d'afficher la liste des fichiers contenus dans un fichier compressé .ZIP (créé par exemple avec la commande Panoramic ARCHIVER_ADD, bien pratique), avec leur nom, taille et date de création. - Code:
-
DIM f$ f$ = "Z:\Zipfile.zip" WIDTH 0,500: HEIGHT 0,1100 MEMO 1: FULL_SPACE 1: FONT_NAME 1,"Lucida Console" Vzip(f$): clipboard_paste 1 END
SUB Vzip(zip$) ' Liste des fichiers contenus dans le fichier compressé zip$. ' Avec leur taille réelle, leur dernière date de modification et leur nom. ' Le résultat est rendu dans le clipboard (exemple CLIPBOARD_PASTE dans un Memo) DIM_LOCAL a$,v%(100),i%,sz%,dt%,hr%,tc%,tr%,ln%,le%,h%,m%,nom$,po%,aa%,mm%,jj% FILEBIN_OPEN_READ 9,zip$: sz% = FILEBIN_SIZE(9) a$ = "": po% = 0 WHILE po%<sz% ' séquence début du header de chaque fichier (en hexa): 50 4B 03 04 FILEBIN_POSITION 9,po% FILEBIN_BLOCK_READ 9,100,v%(0): IF v%(2) <> 3 THEN EXIT_WHILE: ' c'est la fin hr% = v%(10)+256*v%(11): ' heure fichier (2 octets) dt% = v%(12)+256*v%(13): ' date fichier (2 octets) aa% = 1980+BIN_AND(dt%,HEX("FE00"))/512: ' année (depuis 1980) mm% = BIN_AND(dt%,HEX("1E0"))/32: ' mois jj% = BIN_AND(dt%,31): ' jour h% = BIN_AND(hr%,HEX("F800"))/2048: ' heure m% = BIN_AND(hr%,HEX("7E0"))/32: ' minutes tc% = v%(18)+256*v%(19)+65536*v%(20)+16777216*v%(21): ' taille compactée tr% = v%(22)+256*v%(23)+65536*v%(24)+16777216*v%(25): ' taille réelle ln% = v%(26)+256*v%(27): ' longueur du nom le% = v%(28)+256*v%(29): ' longueur extra field nom$ = "": FOR i% = 0 TO ln%-1: nom$=nom$+CHR$(v%(30+i%)): NEXT i% a$ = a$ + RIGHT$(" "+STR$(tr%),9)+" " a$ = a$ + RIGHT$("0"+STR$(jj%),2)+"/"+RIGHT$("0"+STR$(mm%),2) a$ = a$ + "/"+STR$(aa%)+" "+RIGHT$("0"+STR$(h%),2) a$ = a$ + ":"+RIGHT$("0"+STR$(m%),2)+" " + nom$ + CHR$(13)+CHR$(10) po% = po%+30+ln%+le%+tc%: ' positionnement sur le fichier suivant END_WHILE FILEBIN_CLOSE 9 CLIPBOARD_STRING_COPY LEFT$(a$, LEN(a$)-2) END_SUB Je rappelle au passage les commandes ARCHIVER_ADD (compression du contenu d'un répertoire dans un fichier zip), et ARCHIVER_EXTRACT (extraction dans un répertoire du contenu d'un fichier zip). | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 30 Nov 2016 - 12:40 | |
| Une petite sub bien utile. Bravo JL35
| |
|