Automator : copie de fichiers |
Bienvenue invité ( Connexion | Inscription )
Automator : copie de fichiers |
12 May 2015, 15:07
Message
#1
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 659 Inscrit : 7 May 2015 Membre no 195 224 |
Bonjour,
Régulièrement, j'ai besoin de copier une série de fichiers sur un support amovible (une carte SD mais pas toujours la même) dans un ordre bien précis. En effet, à la lecture de la carte sur mon appareil, les fichiers sont systématiquement classés par ordre d'ajout et je veux pouvoir les classer dans un ordre bien précis (qui n'est pas forcément alphabétique). Je cherche donc à réaliser un script qui demande le dossier des originaux et l'emplacement de la carte SD. Ensuite, il devrait créer un dossier où mettre les fichiers dans la carte (s'il n'existe pas déjà) et copier les fichiers originaux dans l'ordre qui m'intéresse. Mais je bloque dès les prémisses : sans même chercher à créer un dossier, j'ai écrit : Capture_d___e__cran_2015_05_12_a___16.04.38.png ( 120.01 Ko ) Nombre de téléchargements : 14 Si je l'execute, il me dit Citation Echec de traitement pour Copier des éléments du Finder Impossible d'enregistrer le fichier "Chant" dans le dossier "Bureau". Le dossier "Chant" dont il parle doit être le dossier d'originaux spécifié (et nonle fichier situé dans ce dossier que je lui ai demandé) et le dossier "Bureau" n'est pas du tout le dossier de la carte SD que je lui ai spécifié... Je ne comprends pas bien son fonctionnement, si quelqu'un sait ce servir du petit robot, ça m'intéresse beaucoup. Merci à vous -------------------- "iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3,
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce |
|
|
Guest_JacqR_* |
12 May 2015, 16:51
Message
#2
|
Guests |
Bonjour,
C'est que vous n'avez pas définie la variable "Destination", donc il utilise bureau, le contenu de la variable par défaut. L'action "Obtenir la valeur de la variable" ne sert que si vous voulez utiliser cette variable comme paramètre pour l'action suivante. L'action "Obtenir les éléments sélectionnés du Finder" ne sert à rien selon votre demande. Essaie ceci : Important n'oublie pas de cocher "Ignorer l'entrée de cette action" dans les options de la troisième action. (pour ne pas copier la sortie de la première et de la deuxième action) |
|
|
12 May 2015, 17:05
Message
#3
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 659 Inscrit : 7 May 2015 Membre no 195 224 |
En effet, je viens de comprendre ça. Mais il ne veut toujours pas faire ce que je veux :
avec il ne fait pas la recherche sur le dossier Originaux comme je pensais lui avoir demandé mais sur l'ensemble de l'ordinateur. Et même si les fichiers existent, il refuse de les copier : Citation -[NSFileManager createDirectoryAtURL:withntermediateDirectories:attributes:error:]: URL is nil Le problème vient peut-être du fait que j'utilise "Stockage" pour obtenir la valeur de ma variable. Quand j'utilisais "Chemin", il voulait que je lui définisse une valeur ("Bureau") qui était prise en compte derrière. Ce message a été modifié par Anard - 12 May 2015, 17:07. -------------------- "iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3,
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce |
|
|
Guest_JacqR_* |
12 May 2015, 17:12
Message
#4
|
Guests |
C'est que vous n'avez pas définie la variable "CarteSd", donc il est vide (URL is nil) par défaut.
Essaie ceci : Important : N'oublie pas de cocher "Ignorer l'entrée de cette action" dans les options de la troisième action. |
|
|
12 May 2015, 17:22
Message
#5
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 659 Inscrit : 7 May 2015 Membre no 195 224 |
Si, la variable était bien définie elle aussi.
Mais pour voir j'ai essayé votre code exact, en ajoutant seulement une ligne pour enregistrer la variable "Originaux" pour pouvoir la réutiliser par la suite (j'ai 25 fichiers à copier depuis ce dossier !) En effet, "Obtenir le contenu du dossier" et "Filtrer les éléments du Finder" fonctionne contrairement à "Rechercher des éléments du Finder" comme j'avais fait précédemment... Par contre, au moment de copier, l'URL est toujours "nil" alors que la variable "Destination" était bien définie à l'étape précédente : Ce message a été modifié par Anard - 12 May 2015, 17:25. -------------------- "iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3,
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce |
|
|
12 May 2015, 18:00
Message
#6
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 659 Inscrit : 7 May 2015 Membre no 195 224 |
Très étrange. Alors que le résultat de "Obtenir la valeur de la variable Destination" au début du script donne bien le chemin que j'ai sélectionné, au moment de copier les fichiers, si je demande "Afficher cette action si le processus est executé", il me demande à nouveau le chemin de destination, avec le bureau comme valeur par défaut.
-------------------- "iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3,
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce |
|
|
Guest_JacqR_* |
12 May 2015, 18:13
Message
#7
|
Guests |
Si, la variable était bien définie elle aussi. Par contre, au moment de copier, l'URL est toujours "nil" alors que la variable "Destination" était bien définie à l'étape précédente : OK, elle est bien définie dans ce cas Selon l'image --> Pour définir une variable, il faut utiliser l'action "Définir la valeur de la variable" au lieu de l'action "Obtenir la valeur de la variable", selon ce que je vois dans ton image. Sinon, je ne sais pas pourquoi vous obtenez cette erreur ! Très étrange. Alors que le résultat de "Obtenir la valeur de la variable Destination" au début du script donne bien le chemin que j'ai sélectionné, au moment de copier les fichiers, si je demande "Afficher cette action si le processus est executé", il me demande à nouveau le chemin de destination, avec le bureau comme valeur par défaut. Oui, cela est le comportement normal, quand vous cochez "Afficher cette action si le processus est exécuté", Automator n'utilise pas la valeur défini, mais la valeur par défaut. |
|
|
12 May 2015, 18:14
Message
#8
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 659 Inscrit : 7 May 2015 Membre no 195 224 |
La définition des variable est bien corrigée : je n'ai plus que "Destination" et "Originaux".
Donc le problème doit venir de "Obtenir la valeur de la variable" mais je ne trouve pas la commande "Définir la valeur de la variable". J'ai même cherché "définir" dans la bibliothèque mais il ne trouve rien... Ca pourrait être très utile Automator, mais je ne comprend pas bien leur organisation... EDIT : Trouvé ! C'est dans "Actions -> Bibliothèque -> Utilitaires" ! Pas dans "Variables"... Nouvelle erreur par contre : Citation Impossible d'enregistrer le fichier C.mid dans le dossier Accordage Les droits d'accès au dossier concerné (sur la carte SD) ne sont pas modifiables et sont simplement "Lecture et écriture autorisées". Evidemment, sans Automator, en copiant le fichier à la main, il n'y a aucun souci. J'en suis là : Merci beaucoup pour ton aide ! Ce message a été modifié par Anard - 12 May 2015, 18:39. -------------------- "iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3,
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce |
|
|
12 May 2015, 19:27
Message
#9
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 659 Inscrit : 7 May 2015 Membre no 195 224 |
Je ne sais pas pourquoi mais en réécrivant le fichier Automator en mode "Service", ça fonctionne...
-------------------- "iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3,
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce |
|
|
12 May 2015, 22:02
Message
#10
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 659 Inscrit : 7 May 2015 Membre no 195 224 |
Bon ça semble bien fonctionner mais c'est une belle usine à gaz !
J'aurai été plus fin en faisant tout ça en AppleScript je pense, mais ça me demanderait d'apprendre un nouveau langage (du coup, autant apprendre JavaScript qui est plus polyvalent) et je ne peux pas me le permettre. Ils auraient au moins pu autoriser des boucles. Enfin bon. Pas de conditions non plus, mais il agit intelligemment (je pensais devoir vérifier que mon dossier n'existe pas encore avant de le créer, mais il le fait tout seul : si le dossier existe, rien ne se passe). J'ai donc créé 4 "Services" Automator (accessibles par un clic droit sur ma carte SD) qui me créent 4 dossiers différents avec plus ou moins les mêmes fichiers classés dans un ordre différent. Je suis en train d'essayer de les réunir tous les 4 sur un seul script. Mais j'ai bien l'impression qu'on ne peut pas non plus appeler des "Services" depuis un autre. Du coup je me lance dans la copie brutale de mon travail sur un dernier script qui fait les 4 à la suite. Je suis en train de copier le second, il tourne depuis 2 minutes, mais ça n'a pas l'air gagné qu'il aille au bout... Il n'y a pas un moyen d'appeler directement les scripts que j'ai écrits ? Ce message a été modifié par Anard - 12 May 2015, 22:04. -------------------- "iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3,
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce |
|
|
13 May 2015, 09:30
Message
#11
|
|
Macbidouilleur d'argent ! Groupe : Membres Messages : 659 Inscrit : 7 May 2015 Membre no 195 224 |
J'avance mais au niveau des boucles, je ne comprend toujours pas la logique de Automator :
Je voudrais répéter ces 4 actions indépendantes (l'entrée est ignorée à la 1ère des 4 actions) en changeant le nom du fichier que je filtre. Malheureusement, il semble qu'il soit impossible de définir le filtre à partir d'une variable texte. Aussi, il n'y a pas de début et fin de boucle. Donc il fonctionne comment par rapport à ça ? Il boucle à partir de l'action "boucle" jusqu'à la fin du processus ? Si vous connaissez une solution... EDIT : à défaut d'une boucle adéquate, j'ai fait des copier-coller de ces quatre lignes en changeant le nom du fichier à filtrer. Petit souci, à partir de 10-12 fichiers (une cinquantaine de lignes), il rame comme un phoque en cage et ça devient impossible (sur certains dossirs, j'ai 35 fichiers à copier !). Solution : j'ai créé 3 applications qui copient chacune 12 fichiers. elles sont ensuite appelées depuis un "service" l'une après l'autre comme ceci : C'est très bourrin, mais ça permet de travailler sans aller boire un café entre chaque action. Je suis convaincu que j'aurai pu faire bien plus simple avec des scripts comme je disais plus haut, mais c'est plus de taf. Conclusion : Automator fonctionne bien dans l'ensemble, une fois qu'on s'est fait à sa logique un peu particulière. En revanche, très limité quand on a besoin de programmer un peu. Il peut appeler des scripts, mais dans ce cas il perd son intérêt pour moi (puisque son intérêt pour moi est de ne pas avoir besoin d'écrire des scripts). Aussi, ça tourne tant qu'on est sur des actions très simple (maximum 50 actions dans un processus). Ce message a été modifié par Anard - 13 May 2015, 12:32. -------------------- "iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3,
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce |
|
|
Nous sommes le : 27th April 2024 - 04:23 |