Attendre la fin de Filecopy
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
Attendre la fin de Filecopy
Bonjour,
Dans mon script, j'utilise la commande Filecopy pour copier plusieurs fichiers d'un dossier vers un autre (mise à jour par écrasement) puis je fais exécuter l'un des fichiers copiés (une base de données Access en l’occurrence). Mon souci c'est que le l'exécution de ce fichier se fait alors que la copie n'a pas fini et du coup erreur.
Comment puis-je faire attendre mon script que la copie intégrale soit terminée ?
Merci pour votre aide
Dans mon script, j'utilise la commande Filecopy pour copier plusieurs fichiers d'un dossier vers un autre (mise à jour par écrasement) puis je fais exécuter l'un des fichiers copiés (une base de données Access en l’occurrence). Mon souci c'est que le l'exécution de ce fichier se fait alors que la copie n'a pas fini et du coup erreur.
Comment puis-je faire attendre mon script que la copie intégrale soit terminée ?
Merci pour votre aide
- mimione
- Niveau 4
- Messages : 91
- Enregistré le : mer. 30 avr. 2008 18:11
- Localisation : Bretagne
- Status : Hors ligne
Re: Attendre la fin de Filecopy
Bonjour
Je vais probablement proposer une ânerie (ça ne serait pas la première !): Est-ce qu'un "FileFlush" ne permettrait pas de résoudre le problème ?? -le hic , c'est qu'il faut un "filehandle" qu'on ne demande pas pour faire le "FileCopy"....
Pas taper !
Bonne journée.
Je vais probablement proposer une ânerie (ça ne serait pas la première !): Est-ce qu'un "FileFlush" ne permettrait pas de résoudre le problème ?? -le hic , c'est qu'il faut un "filehandle" qu'on ne demande pas pour faire le "FileCopy"....
Pas taper !
Bonne journée.
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
--------------------------------------------
Des malheurs évités le bonheur se compose.
Re: Attendre la fin de Filecopy
Fileflush est réservé à l'édition de fichier, mais pas à la copie.
Comme je suis un gentil garçon je tape pas
Comme je suis un gentil garçon je tape pas
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: Attendre la fin de Filecopy
En principe FileCopy ne se termine que quand la copie est finie, donc le problème doit venir du fait que la copie concerne plusieurs fichiers
Pas testé, mais tu pourrais essayer une boucle d'attente qui compare les tailles de source et destination (FileGetSize) du dernier fichier copié
Ou alors un mélange savant de FileExists et de _WinAPI_FileInUse
Ou peut-être tout simplement copier la bdd en dernier
Pas testé, mais tu pourrais essayer une boucle d'attente qui compare les tailles de source et destination (FileGetSize) du dernier fichier copié
Ou alors un mélange savant de FileExists et de _WinAPI_FileInUse
Ou peut-être tout simplement copier la bdd en dernier
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
- orax
- Modérateur
- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: Attendre la fin de Filecopy
J'avais aussi pensé à faire un "flush". Mais je ne sais pas si c'est la solution au problème.
_WinAPI_FlushFileBuffers
me semble plus adapté que FileFlush : How to flush a storage volume's file cache, lock and dismount it, and eject the media - CodeProjectOu Sync de Sysinternals : https://technet.microsoft.com/en-us/sys ... 2147217396
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: Attendre la fin de Filecopy
Bonjour,
Finalement, j'ai pris l'option de mettre en array la liste des fichiers à copier, de copier chaque fichier et de faire une boucle tant que les dates et tailles ne concordent pas :
Finalement, j'ai pris l'option de mettre en array la liste des fichiers à copier, de copier chaque fichier et de faire une boucle tant que les dates et tailles ne concordent pas :
Local $aFileList = _FileListToArray($CheminMAJ, "*")
for $aFile in $aFileList
FileCopy($CheminMAJ & "\" & $aFile,@ScriptDir & "\", $FC_OVERWRITE)
While filegetsize($CheminMAJ & "\" & $aFile)& " - " & filegettime($CheminMAJ & "\" & $aFile,0,1)<> filegetsize(@ScriptDir & "\" & $aFile)& " - " & filegettime(@ScriptDir & "\" & $aFile,0,1)
WEnd
Next
for $aFile in $aFileList
FileCopy($CheminMAJ & "\" & $aFile,@ScriptDir & "\", $FC_OVERWRITE)
While filegetsize($CheminMAJ & "\" & $aFile)& " - " & filegettime($CheminMAJ & "\" & $aFile,0,1)<> filegetsize(@ScriptDir & "\" & $aFile)& " - " & filegettime(@ScriptDir & "\" & $aFile,0,1)
WEnd
Next
Re: Attendre la fin de Filecopy
Et un ProcessWaitClose ne fonctionnerait pas ?
EDIT: Effectivement, c'est une bêtise
Code : Tout sélectionner
Local $iPID = FileCopy(.....)
ProcessWaitClose($iPID)
Modifié en dernier par nanucq le jeu. 27 juil. 2017 15:33, modifié 1 fois.
- mikell
- Spammer !
- Messages : 6292
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: Attendre la fin de Filecopy
FileCopy (fichier d'aide)
Return Value : Success: 1 , Failure: 0.
Return Value : Success: 1 , Failure: 0.
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )