Page 1 sur 1
[R] Taille de fichier en cours de copie
Posté : jeu. 09 déc. 2010 21:27
par namzat
Bonsoir à tous,
Voilà, je solicite votre aide et vos conseil car je suis en train de créer un script et j'ai besoin de vérifier si le fichier est fini de copier et je n'y parviens pas, j'ai tenté d'utiliser le Filegetsize mais elle m'indique la taille totale du fichier alors qu'il n'est pas fini d'être copié....
Ma première idée était de verifier la taille à l'aide de cette fonction, faire une pause, revérifier la taille et comparer les deux et si = 0 alors le fichier est fini d'être copié.
Merci par avance de votre aide.
Re: taille de fichier en cours de copie
Posté : jeu. 09 déc. 2010 21:55
par bloodwolff
présentation des messages ...
Re: [...] Taille de fichier en cours de copie
Posté : jeu. 09 déc. 2010 22:09
par namzat
Désolé, c'est mieux comme ça ?
Re: [...] Taille de fichier en cours de copie
Posté : jeu. 09 déc. 2010 22:21
par Tlem
Si ma mémoire est bonne, ce sujet a déjà été traité.
Vous devriez faire quelques recherches avec l'outil du forum :
http://www.autoitscript.fr/forum/search.php
Re: [...] Taille de fichier en cours de copie
Posté : jeu. 09 déc. 2010 22:43
par namzat
Merci pour ces pistes mais je n'ai trouvé que des infos concernant la copie de fichier que fait le pc avec controle de progress bar, le souci c'est que ce n'est pas comme ça que mon système fonctionne, je m'explique :
En fait il s'agit d'un répertoire partagé sur lequel un copieur scanne un groooos document, je surveille l'activité du repertoire grâce aux fonctions UDF, dès que je détecte un nouveau fichier (ce n'est donc pas mon windows qui crée le fichier mais mon copieur), je souhaite vérifier s'il est complet (donc voir si sa taille ne varie plus), si c'est le cas, j'affiche une popup avec 2 bouton ouvrir fichier et ok qui ferme la popup.
Voilà mon projet et je vous remercie d'y contribuer.
Re: [...] Taille de fichier en cours de copie
Posté : jeu. 09 déc. 2010 22:45
par bloodwolff
Désolé, c'est mieux comme ça ?
Tu le modifiais 10min plus tard et Tlem aurais mis ton post à poubelle

Re: [...] Taille de fichier en cours de copie
Posté : jeu. 09 déc. 2010 22:57
par Tlem
namzat a écrit :En fait il s'agit d'un répertoire partagé
Vous ne l'aviez pas précisé.
Essayez de faire un
FileOpen en écriture. Normalement, tant que le fichier n'est pas fini d'être écrit, vous devriez avoir -1 en retour, mais c'est à vérifier ...
Edit : Testé et approuvé.

Re: [...] Taille de fichier en cours de copie
Posté : jeu. 09 déc. 2010 23:02
par namzat
Merci, c'est vrai que je n'avais pas précisé la totalité de mon projet, Je vais tester mais je me demande si l'on peut faire un Fileopen en écriture sur un fichier PDF si l'on a pas Acrobat complet.
Re: [...] Taille de fichier en cours de copie
Posté : jeu. 09 déc. 2010 23:48
par namzat
J'ai presque fini mon script, j'ai du utiliser un ShellexecuteWait car le Fileopen ne fonctionne pas pour l'ouverture d'un PDF (j'ai fait mes recherches sur le fofo cette fois) mais j'ai bien peur qu'en cas de gros fichier si l'on tente de l'ouvrir alors qu'il n'est pas complet, cela ne me mette une erreur.
Re: [...] Taille de fichier en cours de copie
Posté : ven. 10 déc. 2010 00:04
par Tlem
Je pense que vous n'avez pas compris ce que je voulais dire.
Essayez l'exemple de la commande
FileOpen sur votre fichier en cours de copie et vous verrez que vous aurez -1 en retour, tant que le fichier n'est pas totalement copié.
Cela vous permet donc de vérifier si la copie est terminée ou non (ce qui est votre toute première question).

Re: [...] Taille de fichier en cours de copie
Posté : ven. 10 déc. 2010 08:28
par namzat
Bonjour,
Effectivement je n'avais pas saisi, je tente de mettre ma condition mais elle ne fonctionne pas et je ne coprend pas pourquoi :
Code : Tout sélectionner
$size = FileOpen($rep & '\' & $event_value, 1)
If $size <> -1 Then FileClose ($size)
En fait même pendant la copie d'un gros fichier, le script continue.
J'ai tenté avec un while mais je sèche.
En fait je veux simplement faire une boucle qui dit que on attend que $size soit différent de -1 pour continuer le script.
Je pensais tenir ma solution avec ça :
Code : Tout sélectionner
While 1
$size = FileOpen($rep & '\' & $event_value, 1)
If $size <> -1 Then ExitLoop
WEnd
FileClose ($size)
mais j'ain une erreur Allocating memory, comment faire ?
Merci.
Re: [...] Taille de fichier en cours de copie
Posté : ven. 10 déc. 2010 10:06
par zeshrek
Ton pb d'allocation mémoire vient sans doute du fait que tu ouvres en boucle non stop. Faut faire des pauses des fois

Essaye ca :
Code : Tout sélectionner
$Fichierdispo=False
While $Fichierdispo=False
$Fichierdispo = FileOpen($rep & '\' & $event_value, 1)
Sleep(1000)
WEnd
FileClose ($Fichierdispo)
Re: [...] Taille de fichier en cours de copie
Posté : ven. 10 déc. 2010 20:49
par Tlem
@namzat
Merci de rajouter la balises de code dans votre message précédent.
Re: [...] Taille de fichier en cours de copie
Posté : ven. 10 déc. 2010 21:37
par namzat
Tlem a écrit :@namzat
Merci de rajouter la balises de code dans votre message précédent.
Oui désolé, il faut que je m'habitue aux règles du forum, voilà qui est corrigé.
zeshrek a écrit :Ton pb d'allocation mémoire vient sans doute du fait que tu ouvres en boucle non stop. Faut faire des pauses des fois

Essaye ca :
Code : Tout sélectionner
$Fichierdispo=False
While $Fichierdispo=False
$Fichierdispo = FileOpen($rep & '\' & $event_value, 1)
Sleep(1000)
WEnd
FileClose ($Fichierdispo)
Oui effectivement, merci zeshrek, en insérant une pause, cela marche mieux.
Par contre, le FileOpen retourne une valeur numérique (-1 si on ne peut l'ouvrir en écriture, merci à Tlem) et non True/False.
Voilà qui est résolu et fonctionnel grâce à votre aide ! (je vais mettre un [R ] )
Merci pour tout et j'éspère que ce post servira à d'autres newbies comme moi ...
Re: [R] Taille de fichier en cours de copie
Posté : sam. 11 déc. 2010 17:33
par zeshrek
Ah ba oui tiens, j'ai merdu
Je m'étais mis dans la tete qu'il renvoyait 0 en cas d'echec, ou le N° de handle en cas de succes.
Du coup comme false=0 mon code aurait marché, mais là, comme c'est -1, il faut remplacer les false de mon code par -1 (ou par $false, et avoir au préalable défini que $false=-1
Toutes mes confuses