JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Compacter/décompacter des fichiers (.zip) Sam 25 Fév 2012 - 18:24 | |
| Petit utilitaire sans prétention, pour compacter une série de fichiers à transporter. En fait c'est 7-Zip qui fait le travail, ceci est simplement une interface. 7-Zip est composé de plusieurs modules, notamment celui lancé normalement depuis Windows. Ici c'est la variante 7z.exe (livrée avec) qui est utilisée, appelable en ligne de commande (donc depuis Panoramic). Si on ne l'a pas déjà, on peut trouver 7-Zip n'importe où sur le net, c'est gratuit. - Code:
-
' 7zip.bas compactage/décompactage de fichiers en .zip LABEL Mode, Chr, Chf, Suf, Tota, Exec, Aide DIM z7$, r$, fr$, fm$, sr$, a$, i%, ta%, zip%
z7$ = "C:\Progra~1\7-Zip\7z.exe ": ' Programme 7-Zip fm$ = "C:\Temp\Tmp.tmp"
WIDTH 0, 530: CAPTION 0, " - COMPACTAGE/DÉCOMPACTAGE DE FICHIERS ZIP -" BORDER_SMALL 0: COLOR 0, 192,255,255: FONT_BOLD 0 ALPHA 1: TOP 1, 8: LEFT 1, 5: CAPTION 1, " Répertoire (clic pour choisir):" EDIT 2: TOP 2, 25: LEFT 2, 5: WIDTH 2, 500 ON_CLICK 2, Chr ALPHA 3: TOP 3, 53: LEFT 3, 10: CAPTION 3, " Fichiers:" ALPHA 4: TOP 4, 53: LEFT 4, 160: CAPTION 4, " Liste à compacter:" LIST 5: TOP 5, 70: LEFT 5, 5: WIDTH 5, 150: HEIGHT 5, 280 ON_CLICK 5, Chf LIST 6: TOP 6, 70: LEFT 6, 160: WIDTH 6, 350: HEIGHT 6, 260 ON_CLICK 6, Suf ALPHA 7: TOP 7, 363: LEFT 7, 5: CAPTION 7, " Fichier résultat (.zip):" EDIT 8: TOP 8, 380: LEFT 8, 5: WIDTH 8, 500 ALPHA 9: TOP 9, 400: LEFT 9, 5 BUTTON 10: TOP 10, 410: LEFT 10, 300: CAPTION 10, "Compacter" ON_CLICK 10, Exec BUTTON 11: TOP 11, 0: LEFT 11, 460: WIDTH 11,50:CAPTION 11, "Aide" ON_CLICK 11, Aide ALPHA 12: TOP 12, 330: LEFT 12, 160 BUTTON 13: TOP 13, 3: LEFT 13, 280: height 13,20: CAPTION 13, "Zip" BUTTON 14: TOP 14, 3: LEFT 14, 370: height 14,20: CAPTION 14, "Unzip" ON_CLICK 13, Mode: ON_CLICK 14, Mode OPEN_DIALOG 99 zip% = 0: ' Mode Zip (=1: mode Unzip) 2D_PEN_COLOR 192,255,255 2D_FILL_COLOR 255,0,0: 2D_RECTANGLE 277,0,358,25 2D_FILL_COLOR 192,255,255: 2D_RECTANGLE 367,0,448,25 END
Mode: IF CLICKED(13) = 1 zip% = 0 CAPTION 1, " Répertoire (clic pour choisir):" CAPTION 3, " Fichiers:" CAPTION 4, " Liste à compacter:" CAPTION 7, " Fichier résultat (.zip):" CAPTION 10, "Compacter" 2D_FILL_COLOR 255,0,0: 2D_RECTANGLE 277,0,358,25 2D_FILL_COLOR 192,255,255: 2D_RECTANGLE 367,0,448,25 ELSE zip% = 1 CAPTION 1, " Fichier à dézipper (clic pour choisir):" CAPTION 3, " Taille réelle:" CAPTION 4, " Liste des fichiers inclus:" CAPTION 7, " Répertoire résultat:" CAPTION 10, "Dézipper" 2D_FILL_COLOR 255,0,0: 2D_RECTANGLE 367,0,448,25 2D_FILL_COLOR 192,255,255: 2D_RECTANGLE 277,0,358,25 END_IF CLEAR 5: CLEAR 6: TEXT 2, "": TEXT 8, "": CAPTION 9, "" RETURN
Chr: r$ = FILE_NAME$(99): IF LEN(r$) < 4 THEN RETURN IF zip% = 1 TEXT 2, r$ IF UPPER$(RIGHT$(r$, 4)) <> ".ZIP" MESSAGE "Ce n'est pas un fichier zip !": RETURN END_IF EXECUTE_WAIT "Cmd.exe /c " + z7$+"l "+r$+ " >" + fm$ CLEAR 5: CLEAR 6 FILE_OPEN_READ 1, fm$ FILE_READLN 1, a$ WHILE LEFT$(a$, 5) <> "-----": FILE_READLN 1, a$: END_WHILE FILE_READLN 1,a$ WHILE LEFT$(a$, 5) <> "-----" ITEM_ADD 5, MID$(a$,27,12) ITEM_ADD 6, MID$(a$,54,50): FILE_READLN 1, a$ END_WHILE FILE_CLOSE 1: FILE_DELETE fm$ ELSE r$ = FILE_EXTRACT_PATH$(r$): TEXT 2, r$ sr$ = DIR_CURRENT$ DIR_CHANGE r$ CLEAR 5 a$ = FILE_FIND_FIRST$ WHILE a$ <> "_" IF FILE_EXISTS(a$) = 1 THEN ITEM_ADD 5, a$: ' c'est bien un fichier a$ = FILE_FIND_NEXT$ END_WHILE DIR_CHANGE sr$ END_IF RETURN
Chf: ITEM_ADD 6, r$ + ITEM_INDEX$(5) GOSUB Tota RETURN
Suf: ITEM_DELETE 6, ITEM_INDEX(6) GOSUB Tota RETURN
Tota: ta% = 0 IF COUNT(6) > 0 FOR i% = 1 TO COUNT(6) FILEBIN_OPEN_READ 1,ITEM_READ$(6,i%): ta%=ta%+FILEBIN_SIZE(1): FILEBIN_CLOSE 1 NEXT i% END_IF CAPTION 12, " Total = " + STR$(ta%)+" octets." RETURN
Exec: IF COUNT(6) = 0 THEN RETURN fr$ = TEXT$(8) IF fr$ = "" If zip% = 0 MESSAGE "Nom du fichier résultat .zip manquant !" ELSE MESSAGE "Nom du répertoire résultat manquant !" END_IF RETURN END_IF IF zip% = 1 ' extraction EXECUTE_WAIT z7$ + "e -o" + fr$ + " " + TEXT$(2) CAPTION 9, "Fichiers extraits." ELSE ' compression IF FILE_EXISTS(fr$) = 1 THEN FILE_DELETE fr$ a$ = "" FOR i% = 1 TO COUNT(6) a$ = a$ + " " + ITEM_READ$(6, i%) NEXT i% EXECUTE_WAIT z7$ + "a " + TEXT$(8) + " " + a$ FILEBIN_OPEN_READ 1, TEXT$(8): ta% = FILEBIN_SIZE(1): FILEBIN_CLOSE 1 CAPTION 9, " Résultat = " + STR$(ta%) + " octets." END_IF RETURN
Aide: DIM rc$: rc$ = CHR$(13)+CHR$(10) a$ = " - COMPACTAGE/DÉCOMPACTAGE DE FICHIERS ZIP -"+rc$+rc$ a$=a$+"Choisir le mode 'Zip' (compactage) ou 'Unzip' (décompactage)."+rc$+rc$ a$=a$+"Compactage de fichiers en .zip:"+rc$ a$=a$+"---------------------------------"+rc$ a$=a$+"Clic dans la zone 'Répertoire' puis sur un fichier quelconque de ce"+rc$ a$=a$+"répertoire, la liste des fichiers s'affiche à gauche."+rc$ a$=a$+"Cliquer sur les fichiers à compacter, ils sont transportés dans la"+rc$ a$=a$+"liste à droite. On peut sélectionner des fichiers dans des répertoires"+rc$ a$=a$+"différents, il suffit de recliquer dans le champ 'Répertoire'."+rc$ a$=a$+"On peut annuler une sélection en cliquant sur l'article correspondant."+rc$+rc$ a$=a$+"Une fois la liste complète, entrer un chemin complet de fichier"+rc$ a$=a$+"résultat (.zip) dans le champ 'Fichier résultat'."+rc$+rc$ a$=a$+"Lancer l'opération de compactage: bouton 'Compacter', l'affichage"+rc$ a$=a$+"de la taille du fichier résultat indique que l'opération est terminée."+rc$+rc$ a$=a$+"Décompactage d'un fichier .zip:"+rc$ a$=a$+"---------------------------------"+rc$ a$=a$+"Clic la fenêtre 'Fichier à dézipper', choisir le fichier .zip."+rc$ a$=a$+"La liste des fichiers inclus s'affiche, avec leur taille réelle respective."+rc$ a$=a$+"Clic la zone 'Répertoire résultat' pour choisir le répertoire destinataire."+rc$ a$=a$+"Lancer le décompactage: bouton 'Dézipper'."+rc$+rc$ MESSAGE a$ FREE rc$ RETURN
26/2 ajouté le décompactage
Dernière édition par JL35 le Dim 26 Fév 2012 - 16:05, édité 3 fois | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compacter/décompacter des fichiers (.zip) Dim 26 Fév 2012 - 16:06 | |
| Et pour faire bonne mesure, j'ai ajouté le décompactage d'un .zip, pour avoir l'outil complet.
Remarque pour Jack: souvent (mais pas systématiquement ?), en mode BORDER_SMALL, le Caption du Form 0 n'est pas bien centré verticalement, le bas du texte est tronqué. (c'est un détail esthétique). | |
|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Compacter/décompacter des fichiers (.zip) Dim 26 Fév 2012 - 17:14 | |
| Voici un programme simple, qui tronque le titre de la fenêtre, ce qui n'est pas normal. Ce que je trouve aussi anormal, c'est quand je déclare un picture avec des dimensions supérieures au form sur lequel il se trouve, les ascenseurs se mettent en place, ce qui est normal, mais si j'active la ligne border_hide, c'est à dire que je désire faire disparaître les bords du form, il me fait disparaître les ascenseurs avec! ce n'est pas normal ça! Les ascenseurs devraient rester en place afin d'évoluer dans le picture! - Code:
-
border_normal 0 full_space 0:border_small 0:caption 0,"ESSAI D'affichage!!!"
picture 1:width 1,5000:height 1,3000
' border_hide 0 while scancode=0:end_while terminate | |
|