Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Compresser un dossier | |
| | |
Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Compresser un dossier Mer 8 Jan 2014 - 22:44 | |
| Il arrive parfois que l’on veuille compresser les fichiers contenus dans un dossier pour en faire une archive sous forme de zip. Comme Panoramic ne dispose pas d’une fonction qui réalise cette tâche, voici une sub contenant un script vbs qui permet d’automatiser cette action. L’appel de la sub se fait comme ceci : Zip(source$,destination$)Avec source$ : dossier contenant les fichiers à zipper ; Destination$ : dossier où sera enregistrée l’archive zippée et sous quel nom. Exemple : - Code:
-
Zip("C:\temp", "D:\Mes Archives\MonZip.zip") permet de compresser tous les fichiers du dossier C:\temp ; le résultat sera enregistré dans le dossier D:\Mes Archives sous le nom MonZip.zip. Remarque : les dossiers Source$ et Destinations doivent exister, autrement l’opération échoue et un message d’erreur sera affiché. - Spoiler:
- Code:
-
rem ============================================================================ rem Compresser un dossier rem Par Papydall rem ============================================================================ rem Appel : Zip(Source$,Destination$) rem Exemple : rem compresser les fichiers qui se trouvent dans le dossier "C:\temp" rem La sortie sera dans le dossier "D:\Mes Archives" sous le nom "MonZip.zip"
Zip("C:\temp","D:\Mes Archives\MonZip.zip")
END rem =========================================================================== ' Paramètres: ' Source$ est le dossier à compresser (indiquer le chemin complet) ' Destination$ est le dossier où sera enregisté le zip ' REMARQUE IMPORTANTE : ' Source$ et Destination$ doivent être des dossiers valides ' Si Source$ et/ou Destination$ ne sont pas valides, il y aura une erreur SUB Zip(Source$,Destination$) dim_local f$ f$ = "C:\temp\zip.vbs" : ' A adapter selon vos besoins FILE_OPEN_WRITE 1, f$ ' Création du script FILE_WRITELN 1, "Dim Source, Destination, MyHex, MyBinary, i" FILE_WRITELN 1, "Dim oShell, oApp, oFolder, oCTF, oFile, oFileSys" FILE_WRITELN 1, "Source = " + chr$(34) + Source$ + chr$(34) FILE_WRITELN 1, "Destination = " + chr$(34) + destination$ + chr$(34) FILE_WRITELN 1, "MyHex = _" FILE_WRITELN 1, "Array(80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)" FILE_WRITELN 1, "For i = 0 To UBound(MyHex)" FILE_WRITELN 1, " MyBinary = MyBinary & Chr(MyHex(i))" FILE_WRITELN 1, "Next" FILE_WRITELN 1, "Set oShell = CreateObject(" + chr$(34) + "WScript.Shell"+ chr$(34) + ")" FILE_WRITELN 1, "Set oFileSys = CreateObject(" + chr$(34) + "Scripting.FileSystemObject" + chr$(34) + ")" FILE_WRITELN 1, "Set oCTF = oFileSys.CreateTextFile(Destination, True)" FILE_WRITELN 1, "oCTF.Write MyBinary" FILE_WRITELN 1, "oCTF.Close" FILE_WRITELN 1, "Set oCTF = Nothing" FILE_WRITELN 1, "Set oApp = CreateObject(" + chr$(34) + "Shell.Application" + chr$(34) + ")" FILE_WRITELN 1, "Set oFolder = oApp.NameSpace(Source)" FILE_WRITELN 1, "If Not oFolder Is Nothing Then _" FILE_WRITELN 1, " oApp.NameSpace(Destination).CopyHere oFolder.Items" FILE_WRITELN 1, "wScript.Sleep 1000" FILE_WRITELN 1, "Set oFile = Nothing" FILE_WRITELN 1, "On Error Resume Next" FILE_CLOSE 1 ' Exécution du script EXECUTE_WAIT f$ ' Suppression du script FILE_DELETE f$ message "Terminé" END_SUB rem ===========================================================================
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Mer 8 Jan 2014 - 22:59 | |
| Intéressant ! Manque plus que la sub Unzip. Mais bon, windows sait faire. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Compresser un dossier Mer 8 Jan 2014 - 23:14 | |
| C’est possible. Je posterais peut-être un code tout à l’heure. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Mer 8 Jan 2014 - 23:37 | |
| Comme je disais c'est moins vital que le zip puisque windows sait faire la décompression (clic droit, 'Extraire tout...'). Mais on peut vouloir le faire par programme. | |
| | | Invité Invité
| Sujet: Re: Compresser un dossier Mer 8 Jan 2014 - 23:50 | |
| Papydall, je te remercie. J'avais posé la question pour arriver au résultat, et je n'ai reçu que des liens. J'avoue que je n'avais pas trop le temps, mais je n'avais pas réussi. Je n'essaye pas maintenant, j'ai pas le temps, mais si ça marche, je pourrais l'inclure dans mon programme. Je garde le lien. |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Compresser un dossier Jeu 9 Jan 2014 - 0:31 | |
| Voici la Sub qui réalise la fonction inverse : décompresser un fichier zip. Appel : - Code:
-
Unzip(ZipFile$,ExtractTo$) Avec ZipFile$ : Chemin complet du fichier zip à dézipper ExtractTo$ : Destination où les fichiers extraits seront enregistrés. REMARQUES : Si la destination n'existe pas, elle sera crée. Si certains fichiers du dossier ont le même nom que les fichiers du dossier de destination, il vous sera demandé si vous voulez les remplacer ou non. - Spoiler:
- Code:
-
rem ============================================================================ rem Décompresser un fichier zip rem Par Papydall rem ================================================================================= rem Appel : Unzip(ZipFile$,ExtractTo$) rem Exemple : rem Décompresser le fichier "MonZip.zip" qui se trouve dans le dossier "D:\Mes Archives" rem La sortie sera dans le dossier "D:\test"
Unzip("D:\Mes Archives\MonZip.zip","D:\test")
END rem ============================================================================ ' Paramètres ' ZipFile$ : Chemin complet du fichier zip à dézipper ' ExtractTo$ : Destination où les fichiers extraits seront enregistrés. ' REMARQUES : ' Si la destination n'existe pas, elle sera crée. ' Si certains fichiers du dossier ont le même nom que les fichiers du dossier ' de destination, il vous sera demandé si vous voulez les remplacer ou non. SUB Unzip(ZipFile$,ExtractTo$) dim_local f$ f$ = "C:\temp\zip.vbs" : ' A adapter selon vos besoins FILE_OPEN_WRITE 1, f$ ' Création du script File_WRITELN 1, "ZipFile = " + chr$(34) + ZipFile$ + chr$(34) FILE_WRITELN 1, "ExtractTo = " + chr$(34) + ExtractTo$ + chr$(34) FILE_WRITELN 1, "Set fso = CreateObject(" + chr$(34) + "Scripting.FileSystemObject"+ chr$(34)+")" ' Si la destination de l'extraction n'existe pas, la créer FILE_WRITELN 1, "If NOT fso.FolderExists(ExtractTo) Then" FILE_WRITELN 1, " fso.CreateFolder(ExtractTo)" FILE_WRITELN 1, "End If" ' Extraire le contenu du fichier zip FILE_WRITELN 1, "set objShell = CreateObject(" + chr$(34) +"Shell.Application" + chr$(34) + ")" FILE_WRITELN 1, "set FilesInZip=objShell.NameSpace(ZipFile).items" FILE_WRITELN 1, "objShell.NameSpace(ExtractTo).CopyHere(FilesInZip)" FILE_WRITELN 1, "Set fso = Nothing" FILE_WRITELN 1, "Set objShell = Nothing" FILE_CLOSE 1 ' Exécution du script EXECUTE_WAIT f$ ' Suppression du script FILE_DELETE f$ message "Terminé" END_SUB rem ===========================================================================
@Cosmos Je viens de faire quelques essais sur les deux codes et ça marche mais sait-on jamais ? Je ne suis pas expert en VBS : je fais mes premiers pas. Si ça peut te servir à toi ou à un autre Panoramicien, le but serait atteint! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Jeu 9 Jan 2014 - 0:44 | |
| Testé et approuvé ! bravo papydall Je mets tout ça dans ma collection de subs. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Compresser un dossier Jeu 9 Jan 2014 - 0:59 | |
| | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 9 Jan 2014 - 1:25 | |
| Ces deux là, elles vont être en ligne sous peu dans le Mag. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Compresser un dossier Jeu 9 Jan 2014 - 2:06 | |
| Sers-toi Ygeronimi. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Jeu 9 Jan 2014 - 13:42 | |
| Une chose que je sais faire avec unzip.exe, mais je ne sais pas si c'est possible en script vbs: avoir la liste des fichiers contenus dans un .zip sans le décompresser: unzip.exe -l Monzip.zip qui donne la taille, la date et le chemin complet de chaque dossier et fichier contenu. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Jeu 9 Jan 2014 - 20:19 | |
| papydall, Hier je n'ai pas poussé les tests assez loin, pour la sub Zip. En effet, je constate que s'il y a un fichier exécutable (.exe) dans la liste des fichiers à compresser, la compression s'arrête juste avant. - Le fichier zip comprend tous les fichiers qui précèdent l'exécutable, mais pas celui-ci ni les fichiers suivants, quels qu'ils soient. - Si le dossier à compresser ne contient que l'exécutable, le fichier zip résultant est vide (sauf quelques octets, d'en-tête je suppose) PS Une précision importante ! Il semble que le problème se pose avec un exécutable généré par Panoramic, ça ne le fait pas avec un exe quelconque... Je confirme: J'ai fait l'essai avec différents .exe générés par Panoramic et d'autres .exe divers, le blocage ne se fait que pour les exécutables Panoramic Je fais l'expérience avec les mêmes éléments avec les utilitaires zip.exe et unzip.exe, et là pas de problème, tous les fichiers y compris les exécutables Panoramic sont bien pris en compte... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Compresser un dossier Jeu 9 Jan 2014 - 23:52 | |
| Salut JL35 Chez moi, la compression se déroule parfaitement aussi bien qu’un EXE se trouve ou non. J’ai testé avec un EXE en panoramic et un autre et ça marche. Suggestion : Supprime la ligne 25 qui n’a aucune utilité ici - Code:
-
FILE_WRITELN 1, "Const ForReading = 1, ForWriting = 2, ForAppending = 8" Modifie le ligne 45 - Code:
-
FILE_WRITELN 1, "wScript.Sleep 1000" comme ceci (en rallongeant le sleep) Il se peut que le système n’a pas eu assez de temps pour achever sa tâche !) - Code:
-
FILE_WRITELN 1, "wScript.Sleep 5000" Refais le test s’il te plait et rend-nous compte du résultat.
Dernière édition par papydall le Ven 10 Jan 2014 - 13:33, édité 3 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Compresser un dossier Ven 10 Jan 2014 - 13:23 | |
| REMARQUE IMPORTANTE :Si, lors de l’exécution d’un script VBS, la fenêtre noire de l’invite de commande s’affiche à l’écran, vous pouvez empêcher cette fenêtre de s’afficher. Pour cela, procédez comme ceci : Ouvrir une fenêtre de l’invite de commande. Taper - Code:
-
wscript /h :wscript Une fenêtre s’affiche avec le message : L’environnement d’exécution de scripts Windows est maintenant fixé à « wscript.exe »Valider en cliquant sur OKDésormais, lorsque vous exécutez un script VBS, il n’y aura plus de fenêtre noire inesthétique (celle de la console). Votre script s’exécutera dans une fenêtre Windows. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Ven 10 Jan 2014 - 13:49 | |
| @papydall Je refais les essais, et effectivement il doit y avoir un problème de timing, à 1000 c'est comme hier, à 5000 tout passe sans problème, je réduis à 2000, pareil, je reviens à 1000 il en manque 1 mais c'est mieux qu'au premier essai. Je compresse toujours le même dossier avec les mêmes fichiers, et je supprime à chaque fois le fichier zip créé. Mais bizarrement les compressions ultérieures sont plus rapides, comme si était gardée la mémoire de ce qui a été fait avant. Je finis par redescendre à un timing de 500 et là il me compresse bien tout, très vite Il est probable que les fichiers lus précédemment (en tout environ 6 M) restent en mémoire dans windows, que du coup leur accès est beaucoup plus rapide, et les opérations à faire dessus idem. Donc il y a bien un problème de timing, mais ce qui est étonnant c'est que si les opérations ne se sont pas faites faute de temps le fichier zip est quand même généré, incomplet mais sans erreur signalée. Je confirme bien qu'il y a une plus ou moins grande quantité de fichiers traités (et sans erreur signalée) en fonction de la valeur du Wscript.Sleep. Ce qui peut être gênant sil y a beaucoup de fichiers... ou alors il faudrait moduler ce timing en fonction de la quantité de données à traiter, mais ce n'est pas très satisfaisant. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Compresser un dossier Ven 10 Jan 2014 - 14:07 | |
| Merci JL35 pour l’intérêt que tu donnes à tester mon code. ça doit profiter à tout le monde. Il est clair que c’est une question de timing. Je pense, donc, qu’il vaut mieux mettre une grande valeur (5000 à 10000 soit 5 à 10 secondes) et être certain que tout se passera bien, que de tenter de gagner une seconde ou deux avec le risque que la tâche soit tronquée. INFOIl existe deux interpréteurs de script disponibles sous Windows. Wscript : pour le mode graphique Cscript : pour le mode texte Pour changer l’interpréteur par défaut, on utilise : Pour choisir Wscript - Code:
-
Wscript //H :WScript Pour choisir Cscript - Code:
-
wscript //H :CScript Nota : Certains préféreront utiliser CSript, qui présente l’avantage d’avoir une commande d’affichage « Wscript.Echo » non bloquante là où WSript utilise une boîte de message (message box) réclamant une action de l’opérateur.Mais comme toujours, chacun a ses préférences !
Dernière édition par papydall le Ven 10 Jan 2014 - 16:09, édité 1 fois (Raison : Correction de la valeur du sleep) | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Ven 10 Jan 2014 - 14:29 | |
| euh... tu voulais sans doute dire 5000 à 10000 et non 100000, qui fait une minute et demie, ça fait un peu long... Ou alors moduler en fonction du volume à traiter, mais ce n'est pas rigoureux et pas satisfaisant pour l'esprit. Il serait utile de faire une vérification derrière, pour voir ce que contient effectivement le zip produit, ce que je fais pour mes essais avec unzip: - Code:
-
unzip -l monzip.zip qui donne la liste et le volume des fichiers compressés inclus. PS papydall, juste une remarque (ici on est en panoramic), je ne comprends rien du tout à ton script, où sont pris en compte les fichiers à compresser ni où se fait la compression... mais ce n'est pas un langage très lumineux... ... Je continue à bricoler, j'ai trouvé sur le net une version un peu plus courte que la tienne (je ne la comprends guère plus), et qui semble mieux marcher: j'ai fait un reboot pour effacer les traces des opérations précédentes, et là il m'a bien tout pris, avec un sleep de 1000, je vais essayer plus court, pour voir, mais l'embêtant c'est qu'il faut rebooter à chaque fois pour effacer les traces précédentes: - Code:
-
SUB Zip(src$,zip$) ' src$: dossier à compresser (chemin complet) ' zip$: fichier résultat compressé .zip (chemin complet) DIM_LOCAL f$, q$: q$ = CHR$(34) f$ = "C:\Temp\zip.vbs" : ' A adapter selon la configuration FILE_OPEN_WRITE 9, f$: ' Création du fichier script VBS FILE_WRITELN 9,"With CreateObject("+q$+"Scripting.FileSystemObject"+q$+")" FILE_WRITELN 9," zipFile = .GetAbsolutePathName("+q$+zip$+q$+")" FILE_WRITELN 9," sFolder = .GetAbsolutePathName("+q$+src$+q$+")" FILE_WRITELN 9," With .CreateTextFile("+q$+zip$+q$+", True)" FILE_WRITELN 9," .Write Chr(80) & Chr(75) & Chr(5) & Chr(6) & String(18, chr(0))" FILE_WRITELN 9," End With" FILE_WRITELN 9,"End With" FILE_WRITELN 9,"With CreateObject("+q$+"Shell.Application"+q$+")" FILE_WRITELN 9," .NameSpace("+q$+zip$+q$+").CopyHere .NameSpace("+q$+src$+q$+").Items" FILE_WRITELN 9," Do Until .NameSpace("+q$+zip$+q$+").Items.Count = _" FILE_WRITELN 9," .NameSpace("+q$+src$+q$+").Items.Count" FILE_WRITELN 9," WScript.Sleep 1000" FILE_WRITELN 9," Loop" FILE_WRITELN 9,"End With" FILE_CLOSE 9 EXECUTE_WAIT f$: ' exécution du script FILE_DELETE f$: ' nettoyage END_SUB Je confirme après essais que cette dernière version semble bien plus performante et plus fiable, je n'ai pas eu de pertes, même avec des sleeps très 'short' (je reste dans la lingerie ) de l'ordre de 20 ms, ce qui ne marche pas du tout pour l'autre. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Compresser un dossier Ven 10 Jan 2014 - 16:24 | |
| - JL35 a écrit:
- euh... tu voulais sans doute dire 5000 à 10000 et non 100000, qui fait une minute et demie, ça fait un peu long...
C’est vrai : je ne compte plus les zéros : j’en ai plein ! - JL35 a écrit:
- PS papydall, juste une remarque (ici on est en panoramic), je ne comprends rien du tout à ton script, où sont pris en compte les fichiers à compresser ni où se fait la compression... mais ce n'est pas un langage très lumineux...
L’appel de la SUB Zip(Source$,Destination$) indique bien que les fichiers à compresser doivent être pris du dossier source$ qui est transmis comme paramètre à la SUb ; de même, la compression se fait dans le dossier destination$ également transmis comme paramètre à la SUB. J’ai testé ton code et ça marche. J’ai même enlevé le Sleep (mais je garde toujours mon slip ) et ça marche ! C’est à confirmer. - JL35 a écrit:
- mais l'embêtant c'est qu'il faut rebooter à chaque fois pour effacer les traces précédentes:
Quelles traces précédentes Moi, je ne reboote pas et ça marche. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Ven 10 Jan 2014 - 18:23 | |
| Oui papydall, ça marche avec mon code à moi, mais avec le tien il semblait bien que au premier lancement on mémorisait des choses (probablement les lectures disque en mémoire) et que pour les essais suivants ça accélérait considérablement le processus. J'avais bien compris pour source$ et destination$, c'est dans le script lui-même que je ne comprenais pas le fonctionnement. Mais ça c'est pas grave, du moment que ça marche ! Là je suis en train d'écrire une sub pour extraire les renseignements du fichier zip sans ressources externes (noms et tailles des fichiers zippés), mais là il faut se plonger dans le binaire et l'hexadécimal. Ça me rappelle des vieux souvenirs... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Compresser un dossier Ven 10 Jan 2014 - 18:58 | |
| - JL35 a écrit:
- Là je suis en train d'écrire une sub pour extraire les renseignements du fichier zip sans ressources externes (noms et tailles des fichiers zippés), mais là il faut se plonger dans le binaire et l'hexadécimal. Ça me rappelle des vieux souvenirs...
Plonge-toi cher ami. Un petit plongeon ne fait de mal à personne, sauf si on craint la noyade ! Moi-même je suis sur un truc, mais j’hésite à plonger. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Ven 10 Jan 2014 - 20:23 | |
| Ah oui, tu attends de voir si je vais remonter ! sympa ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Ven 10 Jan 2014 - 23:02 | |
| Je crois que j'en suis venu à bout, non sans moult tâtonnements: - Code:
-
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% = BIN_AND(dt%,HEX("FE00"))/512+1980: ' 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 11/1 ajout de quelques commentaires (pour ygeronimi ) et... rectification d'une petite erreur dans la récupération de l'année du fichier (qui est basée depuis 1980, ce que je n'avais pas bien vu), finalement j'ai mis l'année complète, et non les deux derniers chiffres.
Dernière édition par JL35 le Sam 11 Jan 2014 - 17:14, édité 5 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Compresser un dossier Sam 11 Jan 2014 - 0:11 | |
| Hé bien, ça marche. Bravo ! Tu n’as pas été long sous l’eau. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Compresser un dossier Sam 11 Jan 2014 - 10:19 | |
| Je commençais à perdre mon souffle... du moins ce qu'il en reste. A ton tour d'aller au bain mon ami papydall ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 11 Jan 2014 - 14:34 | |
| Les deux subs de papydall sont sur le site... @ JL35, Si tu commente un peu la sub, je la mets avec ses deux copines... | |
| | | Contenu sponsorisé
| Sujet: Re: Compresser un dossier | |
| |
| | | | Compresser un dossier | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |