Attendre la fin de Compression avec Winrar sous VB2005

Résolu
cs_ledebutant07 Messages postés 15 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 22 février 2007 - 22 févr. 2007 à 07:17
cs_ledebutant07 Messages postés 15 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 22 février 2007 - 22 févr. 2007 à 14:44
Bonjour,

Je suis sous VB2005 Express

J'écris une appli qui compresse un répertoire et ses sous-répertoire avec WINRAR .

Je cherche comment coder l'attente de fin de compression pour continuer l'exécution de mon appli. 

 

Dim wsh
As
Objectwsh = CreateObject(
"WScript.Shell")

wsh.Run("winrar m -afzip -ibck -r -t -df FileCreate *.* ")

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?---------comment coder l'attende de fin de compression avant de renommer ?

rename ("filcreate.zip", "toto.zip")

Merci d'avance pour vos sugestions et votre aide.
ledebutant07

9 réponses

cs_ledebutant07 Messages postés 15 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 22 février 2007
22 févr. 2007 à 14:33
Merci à tous, la solution m'a été apporté sur un autre forum ( developpez.com pour ne pas le citer)

Voici la formule de code pour attendre la fin de compression avec winrar

------------------------------
Dim wsh AsObject
wsh = CreateObject(
"WScript.Shell")

wsh.Run("winrar m -afzip -ibck -r -t -df FileCreate *.*", 1,True)

rename ("filcreate.zip", "toto.zip")

------------------------------------------------

Merci encore pour avoir essayé de m'aider..

Cordialement
Ledebutant07
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
22 févr. 2007 à 07:29
Faire une boucle allant vérifier qie le fichier filcreate.zip existe et quitter la boucle quand tel est le cas.
Prévoir cependant un temps limite et quitter la boucle également si ce temps s'est écoulé (mâme si le fichier n'existe pas) pour éviter une boucle sans fin en cas de défaillance.
0
cs_ledebutant07 Messages postés 15 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 22 février 2007
22 févr. 2007 à 09:04
Merci mais le fichier existe dès le début de la compression donc.......

Je pense qu'il faut tester la fin du processus Winrar mais je n'ai aucune idée sur la façon de coder.

merci pour vos conseils.

ledebutant07
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
22 févr. 2007 à 09:14
Es-tu certain de ce que le fichier existe dès le début de la compression ?
Celà m'étonne... Comment et où aurait-il pu recevoir son EOF (End Of File) ?

Ne serait-ce pas, plutôt, qu'un fichier de ce nom (non effacé), existe déjà avant d'être "écrasé" par le nouveau ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ledebutant07 Messages postés 15 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 22 février 2007
22 févr. 2007 à 09:24
oui le fichier n'existe pas  c'est sur....
 il suffit de faire un essai avec winrar (on peut compresser des fichiers d'un répertoire et créer le fichier *.rar dans un répertoire différent.........
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
22 févr. 2007 à 10:54
Oui Jacques, c'est normal qu'il existe. Dès que winrar commence la compression il crée le fichier, au premier flush de winrar, le fichier apparait dans l'explorer parce que winrar tamponne directement dans le fichier final au lieu de tamponner en memoire. Au cour de la compression, en rafarichissant l'explorer on peut voir la taille du fichier augmenter.

ledebutant07 > regarde sur ta ethode .Run si tu n'as pas un parametre à passer pour rendre l'execution synchrone. Je connais pas le wscript, mais je ne serait pas surpris qu'il existe un truc comme ça.

sinon il faut passer par les apis. Regarde ma source sur l'ouverture de document, dans la seconde partie j'ai mis en place une synchronisation justement.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
22 févr. 2007 à 11:07
Bonjour Casy,

Je n'utilise pas Winrar (pour certaines raisons trop longues à exposer, parmi lesquelles des raisons de sécurité) et ne l'ai même pas sur ma machine. Je ne peux donc voir comment il "tourne". Je demeure malgré tout surpris qu'il puisse tourner ainsi et qu'un fichier puisse être présent sans encore avoir reçu son EOF. ... Si tel était le cas, on pourrait donc l'interrompre brutalement et avoir malgré tout un fichier (non complet mais existant) ?...
Mystère !

Bon.
Nonobstant mon étonnement :
Tu dis, Casy, "Au cour de la compression, en rafarichissant l'explorer on peut voir la taille du fichier augmenter"

Si c'est ainsi, rien n'interdit alors de faire une boucle While avec une variable de longueur du fichier et de ne quitter cette boucle que lorsque la valeur de cette variable a cessé d'augmenter. Ce serait une solution également.
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
22 févr. 2007 à 14:38
heh heh, c'est bien ce que je disais, il y avait des paramètres à passer à la méthode .Run

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_ledebutant07 Messages postés 15 Date d'inscription jeudi 5 octobre 2006 Statut Membre Dernière intervention 22 février 2007
22 févr. 2007 à 14:44
Exact c'était par là qu'il fallait creuser.
0
Rejoignez-nous