JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Compression de fichiers Jeu 21 Juil 2011 - 21:59 | |
| Pour regrouper une série de fichiers en un seul fichier compressé .zip. Il faut disposer de 7zip, freeware (c'est lui qui fait le travail, ici ce n'est qu'une interface). En effet, l'installation de 7zip fournit entre autres un exécutable 7z.exe (en plus de l'exécutable en mode 'dialogue') qui est appelable en ligne de commande, ce qui est bien commode depuis un programme Panoramic. Il ne reste qu'à lui fournir les bons paramètres: - Code:
-
DIM r$, rp$, a$, f$, fl$, fz$, i%, cmp$ LABEL Chf, Add, Supp, Retour, Compress
rp$ = "Z:\": ' Répertoire de manoeuvre temporaire cmp$ = "C:\Progra~1\7-Zip\7z.exe " fl$ = rp$ + "Liste.txt"
HEIGHT 0, 800 CAPTION 0, " - COMPRESSION DE FICHIERS EN .ZIP -" FONT_BOLD 0 LIST 1: TOP 1, 20: WIDTH 1, 200: HEIGHT 1, 740: COLOR 1, 255,255,220 ON_CLICK 1, Add LIST 2: TOP 2, 70: LEFT 2, 210: WIDTH 2, 370: HEIGHT 2, 300 COLOR 2, 240,255,255 ON_CLICK 2, Supp BUTTON 3: WIDTH 3, 30: HEIGHT 3, 20: FONT_NAME 3, "Wingdings": FONT_BOLD 3 FONT_SIZE 3, 12: CAPTION 3, CHR$(231) ON_CLICK 3, Retour ALPHA 4: TOP 4, 50: LEFT 4, 210: CAPTION 4, " Fichier(s) à compresser en .zip:" ALPHA 5: TOP 5, 390: LEFT 5, 210: CAPTION 5, " Fichier résultat:" EDIT 6: TOP 6, 410: LEFT 6, 210: WIDTH 6, 370: TEXT 6, ".ZIP" EDIT 7: LEFT 7, 30: WIDTH 7, 550 BUTTON 10: TOP 10, 560: LEFT 10, 300: WIDTH 10, 150: HEIGHT 10, 40 CAPTION 10, "Compresser": ON_CLICK 10, Compress ALPHA 11: TOP 11, 460: LEFT 11, 220 a$ = " Clic dans la liste de gauche pour sélectionner" + CHR$(10) a$ = a$ + " un répertoire (<R>) ou un fichier."+CHR$(10) a$ = a$ + "Clic dans la liste de droite pour désélectionner un fichier"+CHR$(10) a$ = a$ + " Renseigner la zone 'Fichier résultat' (chemin complet)"+CHR$(10) a$ = a$ + " puis clic 'Compresser'" CAPTION 11, a$ r$ = "C:\" GOSUB Chf END
Chf: TEXT 7, r$ CLEAR 1 EXECUTE_WAIT "cmd.exe /c DIR " +CHR$(34)+ r$ +CHR$(34)+ " /A:D /B >" + fl$ FILE_OPEN_READ 1, fl$ WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$ ITEM_ADD 1, "<R> " + a$ END_WHILE FILE_CLOSE 1 EXECUTE_WAIT "cmd.exe /c DIR " +CHR$(34)+ r$ +CHR$(34)+ " /A:-D /B >" + fl$ FILE_OPEN_READ 1, fl$ WHILE FILE_EOF(1) = 0 FILE_READLN 1, a$ ITEM_ADD 1, a$ END_WHILE FILE_CLOSE 1 FILE_DELETE fl$ RETURN
Add: f$ = ITEM_INDEX$(1) IF LEFT$(f$, 3) = "<R>" r$ = r$ + MID$(f$, 5, LEN(f$) - 4) + "\": GOSUB Chf RETURN END_IF f$ = r$ + f$ ITEM_ADD 2, f$ RETURN
Supp: ITEM_DELETE 2, ITEM_INDEX(2) RETURN
Retour: IF LEN(r$) > 3 FOR i% = LEN(r$)-1 TO 1 STEP -1 IF MID$(r$, i%, 1) = "\" THEN EXIT_FOR NEXT i% r$ = LEFT$(r$, i%): GOSUB Chf END_IF RETURN
Compress: IF COUNT(2) = 0 MESSAGE "Aucun fichier sélectionné !": RETURN END_IF fz$ = TEXT$(6) IF fz$ = ".ZIP" MESSAGE "Indiquer un fichier résultat !": RETURN END_IF FILE_OPEN_WRITE 1, fl$: ' fichier liste des fichiers à compresser FOR i% = 1 TO COUNT(2) FILE_WRITELN 1, ITEM_READ$(2, i%) NEXT i% FILE_CLOSE 1 EXECUTE_WAIT cmp$ + "a -tzip " + fz$ + " @" + fl$ FILE_DELETE fl$ RETURN | |
|