Voilà j'essaie de créer deux fonctions : je dispose d'un dossier "C:\Folder1" qui contient un grand nombre de fichiers
1/ Ma première fonction RenameFolder à pour but de :
- Renommer le dossier "C:\Folder1" en "C:\TempFolder" (avec tous les fichiers initialement contenus dans "C:\Folder1")
- Recréer un nouveau dossier vide "C:\Folder1"
Par la suite j'utilise d'autres fonctions qui ajoutent des fichiers dans "C:\Folder1" et sur lesquels j'effectue des contrôles quelconques (aucun problème ici)
2/ Ma deuxième fonction MergeFolders à ensuite pour but de :
- Reconstituer mon dossier "C:\Folder1" avec l'ensemble des fichiers additionnels qu'il contient ainsi que ceux contenus dans le dossier "C:\TempFolder"
- Effacer "C:\TempFolder"
Je précise qu'il est très important qu'aucun fichier ne soit perdu dans le process... Voici les deux fonctions que j'utilise actuellement mais il m'arrive frequemment de perdre des fichiers ou alors de rester bloqué dans la fonction MergeFolders...
Voici mes fonctions actuelles :
Code : Tout sélectionner
Func RenameFolder($p_sInitialFolder, $p_sTemporaryFolder)
Local $lf_sCreateFolderSuceed
; Suppression du dossier renommé (au cas où il existe déjà)
DirRemove($p_sTemporaryFolder, 1)
Sleep(1000)
; Renommage du dossier
While DirMove($p_sInitialFolder, $p_sTemporaryFolder, 1) = 0
Sleep(1000)
WEnd
; Création du nouveau répertoire vide
$lf_sCreateFolderSuceed = DirCreate($p_sInitialFolder)
Sleep(1000)
; Vérifications du bon déroulement de la fonction
If $lf_sCreateFolderSuceed = 1 Then
Return True
Else
Return False
EndIf
EndFunc
Func MergeFolders($p_sTemporaryFolder, $p_sMergedFolder)
Local $lf_sCopyFilesSuceed
; Ajout du caractère "\" à la fin du path afin de supprimer la restriction sur le nommage
If StringRight($p_sTemporaryFolder, 1) <> "\" Then $p_sTemporaryFolder = $p_sTemporaryFolder & "\"
If StringRight($p_sMergedFolder, 1) <> "\" Then $p_sMergedFolder = $p_sMergedFolder & "\"
; Copie des anciens fichiers le dossier temporaire
$lf_sCopyFilesSuceed = FileCopy($p_sMergedFolder & "*.*", $p_sTemporaryFolder, 9)
Sleep(2000)
; Suppression du dossier existant
While DirRemove($p_sMergedFolder, 1) = 0
Sleep(1000)
WEnd
; Renommage du dossier temporaire
While DirMove($p_sTemporaryFolder, $p_sMergedFolder, 1) = 0
Sleep(1000)
WEnd
; Vérifications du bon déroulement de la fonction
If $lf_sCopyFilesSuceed = 1 Then
Return True
Else
Return False
EndIf
EndFunc- Les boucles while sont utilisées ici car je n'ai pas la moindre idée du temps que mets AutoIT pour copier un grand nombre de fichiers. Or, j'aimerais éviter l'utilisation de Sleep éxagérés !
- Dans la fonction MergeFolders, je fais la copie depuis le dossier original vers le dossier temporaire puis un renommage. La logique voudrait que l'on copie les fichiers du dossier temporaire vers le dossier final puis que l'on efface le temporaire mais j'ai pensé que cette manip permettrait de gagner du temps d’exécution, sachant que le nombre de fichier contenus dans le dossier final sera ridicule à côté du nombre de fichiers contenus dans le dossier temporaire...
Toute aide est fortement appréciée
Merci par avance,
Cordialement.


