Page 1 sur 1
[R] DirMove et construction du chemin
Posté : mar. 30 mars 2010 15:35
par Dominux
Bonjour,
plutôt néophyte avec AutoIt, pouvez-vous me confirmer que la fonction DirMove ne crée pas automatiquement toute l'arborescence du chemin de destination ?!
Pour être explicite, j'ai un chemin C:\Temp\Dir01 que je veux déplacer vers C:\Temp\Toto\Titi\Dir01, sachant que ce que C:\Temp existe, le reste de l'arborescence Toto\etc.. non!
Le code suivant me renvoi systématiquement une erreur SAUF si je crée au prélable C:\Temp\Toto\Titi\
Code : Tout sélectionner
$source = "C:\Temp\Dir01"
$target = "C:\Temp\Toto\Titi\Dir01"
DirMove( $source, $target, 1)
Je répond tout seul à ma question via mes tests mais une confirmation m'intéresse.
PS: c'est tout de même terrible de ne pas construire tout l'arbo

Re: DirMove et construction du chemin
Posté : mar. 30 mars 2010 15:45
par Sparkdaemon
Quelle erreur est retourné ?
Re: DirMove et construction du chemin
Posté : mar. 30 mars 2010 16:37
par Tlem
Merci de prendre le temps de lire les
règles de présentation d'un message et de rajouter la balise de titre manquante.
En ce qui concerne votre 'problème' avec la commande
DirMove(), il faut bien comprendre que celle-ci comme son nom l'indique permet de déplacer un élément vers un autre.
Si l'élément de destination n'existe pas, comment voulez-vous déplacer quelque chose ???
Ce problème n'est pas exclusif à AutoIt, vous aurez le même problème avec la commande
Move sous DOS.
Maintenant, rien ne vous empêche de créer votre propre fonction
DirMove() afin de pallier à ce problème.
► Afficher le texte
Code : Tout sélectionner
$source = "C:\Temp\Dir01"
$target = "C:\Temp\Toto\Titi\Dir01"
_MonDirMove($source, $target, 1)
Func _MonDirMove($sSrc, $sDst, $Flag = 0)
If not FileExists($sDst) Then DirCreate($sDst)
Return DirMove($sSrc, $sDst, $Flag)
EndFunc
Re: DirMove et construction du chemin
Posté : mar. 30 mars 2010 16:38
par peuchere83
Bonjour Dominux,
A moins que la dernière version est "comblé" ce manque, en effet cette fonction ne créé pas l'arborescence.
Perso je suis en 3.3.0.0 (oui je sais je dois faire la mise à jour

) et j'ai le même fonctionnement que le tiens.
Cela t'oblige à rajouter un DirCreate (y a pas mort d'homme).
Si tu dois faire souvent des déplacement de répertoire, je te conseille de te créer une fonction.
Une remarque quand même sur cette fonction : suivant le codage des caractères que tu utilises, elle ne fonctionne pas forcément cela est encore plus accentué lors de traitements récursifs.
J'ai rencontré ce problème lors de la récupération de données sur un serveur FTP Fedora provennant de source Macintosh (je me suis retrouvé avec des caractères qui ressemblent énormément a des Picasso époque déstructurée).
Bonne journée.
Re: DirMove et construction du chemin
Posté : mar. 30 mars 2010 16:39
par peuchere83
Tlem tu es vraiment trop rapide à répondre : je m'incline

Re: [R]DirMove et construction du chemin
Posté : mar. 30 mars 2010 18:00
par Dominux
Merci de vos retours, j'ai bien entendu créé ma propre fonction ... mais bon ca serait pas mal qu'elle crée le chemin!
PS: j'ai modifié mon post comme le veut le réglement

Re: [R]DirMove et construction du chemin
Posté : mar. 30 mars 2010 18:05
par Tlem
Dominux a écrit :mais bon ca serait pas mal qu'elle crée le chemin!
Avez-vous posé la même question à la société Microsoft concernant la commande
Move ?
Rajoutez la fonction que je vous ai écrit dans vos scripts qui utilisent le déplacement de répertoires et comme cela vous n'aurez plus de problèmes.

Re: [R] DirMove et construction du chemin
Posté : mar. 30 mars 2010 19:00
par Dominux
Mais pourquoi copier Microsoft ?!
Merci pour le bout de script, je ne l'avais pas remarqué (sérieux), c'est un poil (genre crin de cheval) plus simple que ce que j'avais écris!