Page 1 sur 1
[R] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 10:47
par Linox
Bonjour ... m'étant lacer dans l'ART de l'image ... je n'ai plus trop toucher au script depuis plusieurs années ... et voilà que j'ai besoin d'un script AutoIT particulier.
Donc je voudrais un script qui ouvre une boite de dialogue pour sélectionner un dossier source sur mon disque dur ... puis une autre boite de dialogue pour sélectionner un dossier source ... donc le script copierait toute l'arborescence des dossiers du dossier cible ... dans une dossier créer par le script nommé "Copie_JoHoK" dans le dossier cible ... ainsi le script copierait toute les images .JPG et .jpg en respectant l'arborescence.
Quelque aurait-il un peut de temps à m'accorder pour ce script ?
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 15:40
par jbnh
source, source... cible, cible... source cible, on s'y perd... merci de reformuler plus clairement... votre demande
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 15:47
par Linox
Le dossier source ... c'est celui ou se trouve les images ... le dossier cible celui on il fait la copie

Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 15:50
par jbnh
Oui merci, mais :
Donc je voudrais un script qui ouvre une boite de dialogue pour sélectionner un dossier source sur mon disque dur ... puis une autre boite de dialogue pour sélectionner un dossier source
donc le script copierait toute l'arborescence des dossiers du dossier cible ... dans une dossier créer par le script nommé "Copie_JoHoK" dans le dossier cible
Space tout ça...
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 16:00
par Linox
arf mille excuses ... je rectifi
Bonjour ... m'étant lacer dans l'ART de l'image ... je n'ai plus trop toucher au script depuis plusieurs années ... et voilà que j'ai besoin d'un script AutoIT particulier.
Donc je voudrais un script qui ouvre une boite de dialogue pour sélectionner un dossier source sur mon disque dur ... puis une autre boite de dialogue pour sélectionner un dossier cible... donc le script copierait toute l'arborescence des dossiers du dossier source ... dans une dossier créer par le script nommé "Copie_JoHoK" dans le dossier cible ... ainsi le script copierait toute les images .JPG et .jpg en respectant l'arborescence.
Quelque aurait-il un peut de temps à m'accorder pour ce script ?
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 16:34
par jbnh
Voila qui est plus clair
Ceci devrait faire l'affaire :
Code : Tout sélectionner
#include <RecFileListToArray.au3>
#include <Array.au3>
Local $sRoot = FileSelectFolder("Selectionner dossier source", "")
If @error Then
MsgBox($MB_SYSTEMMODAL, "", "No folder was selected.")
exit
Endif
Local $sDest = FileSelectFolder("Selectionner dossier destination", "")
If @error Then
MsgBox($MB_SYSTEMMODAL, "", "No folder was selected.")
exit
Endif
$aList = _RecFileListToArray($sRoot, "*.txt", 1, 1)
For $i = 1 To $aList[0]
FileCopy($sRoot &"\"& $aList[$i], $sDest &"\Copie_JoHoK\"& $aList[$i], 8)
Next
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 16:43
par Linox
Merci
Le script ne copie que les fichier à la racine du dossier ... il ne recréer pas l'arborescence des dossier
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 16:52
par jbnh
Etrange, chez moi bien.
Fait un _arraydisplay de $aList pour voir si la matrice contient l'arborescence des fichiers
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 17:01
par Linox
Il ne la contient pas
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 17:05
par jbnh
Je pense que la fonction que je t'ai donnée est dépréciée, essaye plutôt ceci :
Code : Tout sélectionner
#include <File.au3>
Local $sRoot = FileSelectFolder("Selectionner dossier source", "")
If @error Then
MsgBox($MB_SYSTEMMODAL, "", "No folder was selected.")
exit
Endif
Local $sDest = FileSelectFolder("Selectionner dossier destination", "")
If @error Then
MsgBox($MB_SYSTEMMODAL, "", "No folder was selected.")
exit
Endif
$aList = _FileListToArrayRec($sRoot, "*.txt", 1, 1)
_arraydisplay($aList)
For $i = 1 To $aList[0]
FileCopy($sRoot &"\"& $aList[$i], $sDest &"\Copie_JoHoK\"& $aList[$i], 8)
Next
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 17:11
par Linox
Je ne trouve pas File.au3
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 17:14
par jbnh
Il est contenu dans l'installation autoit de base.
Dans la négative, mettez à jour votre autoit
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 17:18
par Linox
Merci .. j'ai mis à jour ... et le script fonctionne parfaitement

Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 17:19
par Linox
Juste je voudrais copier deux type d'extension ... que dois-je ajouter ?
Re: [..] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 17:37
par jbnh
Je vous laisse lire la documentation sur la fonction _FileListToArrayRec pour que tu puisse modifier à ta guise
Je passe le sujet en resolu
Re: [R] Copie image JPG avec arborescence
Posté : lun. 04 mai 2015 17:49
par Linox
ok merci encore
Re: [R] Copie image JPG avec arborescence
Posté : dim. 10 mai 2015 19:09
par mdanielm
Je soumets ma solution à vos critiques:
► Afficher le texte
Code : Tout sélectionner
; Ycopy.au3
Global $sSource; = FileSelectFolder("Dossier source?", "")
Global $sDest; = FileSelectFolder("Dossier destination?", "") & "\Copie_JoHoK\"
Global $sFiltre = "*.jpg"
Ycopy($sSource, $sDest, $sFiltre)
func Ycopy($sSource, $sDestination, $sFiltre)
; Extraction récursive des fichiers
Local $iPID = Run(@ComSpec & ' /C DIR "' & $sSource & $sFiltre & '" /B /A-D /S', $sSource, @SW_HIDE, $STDOUT_CHILD)
; Attend que le processus termine
ProcessWaitClose($iPID)
; Lit le flux Stdout du PID renvoyé par Run
Local $sResult = StdoutRead($iPID)
; Partage la sortie de StdoutRead en un tableau dont la dernière ligne est vide.
Local $aFull = StringSplit($sResult, @crlf, 1)
; Copie les fichiers un à un
for $i=1 to $aFull[0]-1
FileCopy($aFull[$i], StringReplace($aFull[$i], $sSource, $sDest), 8)
Next
EndFunc
Re: [R] Copie image JPG avec arborescence
Posté : dim. 10 mai 2015 21:44
par jguinch
Pourquoi tu n'as pas utilisé _FileListToArrayRec ?
Re: [R] Copie image JPG avec arborescence
Posté : lun. 11 mai 2015 10:47
par mdanielm
Je n'ai pas voulu utiliser un outil puissant pour un problème relativement simple.
Je n'utilise aucune UDF.
J'ai immédiatement pensé à xcopy de notre vieux dos.
Je suis franchement contre le conseil: "il ne faut pas réinventer la roue".
Je conseille de la réinventer aussi souvent que possible pour retenir les algorithmes qui resserviront dans d'autres contextes.
Un peu comme en math on demande de retenir la démonstration des théorèmes!
Prenons un exemple: Chercher la première occurrence d'un élément d'un tableau.
Cette fonction existe surement mais si je veux chercher un enregistrement dans un gros fichier, l'algorithme est le même mais la fonction sera inutilisable.
Quel est cet algo SI on s'impose les règles de base de LISIBILITE d'un programme (que je n'ai jamais vues sur ce site): à savoir entre autres que si j'utilise une boucle for je dois boucler par principe le nombre de fois annoncé et m'interdire une sortie intempestive sinon le lecteur sera trompé. La boucle while est faite pour sortir sur une condition.
"Y est" ou "n'y est pas" sera logiquement représenté par un booléen...
je vous laisse réfléchir!
Cordialement.