IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Automator : copie de fichiers
Options
Anard
posté 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 :
Fichier joint  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 wink.gif


--------------------
"iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3, Asus GTX670 Intel HD4600, 2x SSD 256Go, HDD 500Go+Zraid 3x2To / Clover - macOS Mojave / Gentoo-Xfce
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 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)

Go to the top of the page
 
+Quote Post
Anard
posté 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, Asus GTX670 Intel HD4600, 2x SSD 256Go, HDD 500Go+Zraid 3x2To / Clover - macOS Mojave / Gentoo-Xfce
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 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.
Et de cocher "Répéter pour chaque sous-dossier" dans la quatrième action, si vous voulez rechercher dans les sous-dossier.
Go to the top of the page
 
+Quote Post
Anard
posté 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, Asus GTX670 Intel HD4600, 2x SSD 256Go, HDD 500Go+Zraid 3x2To / Clover - macOS Mojave / Gentoo-Xfce
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce
Go to the top of the page
 
+Quote Post
Anard
posté 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, Asus GTX670 Intel HD4600, 2x SSD 256Go, HDD 500Go+Zraid 3x2To / Clover - macOS Mojave / Gentoo-Xfce
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce
Go to the top of the page
 
+Quote Post
Guest_JacqR_*
posté 12 May 2015, 18:13
Message #7





Guests






Citation (Anard @ 12 May 2015, 12:22) *
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.
Il faut s'assurer d'utiliser la bonne variable "Destination" au lieu de "CarteSd", selon ce que je vois dans ton image.

Sinon, je ne sais pas pourquoi vous obtenez cette erreur ! blink.gif

Citation (Anard @ 12 May 2015, 13:00) *
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.
Go to the top of the page
 
+Quote Post
Anard
posté 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, Asus GTX670 Intel HD4600, 2x SSD 256Go, HDD 500Go+Zraid 3x2To / Clover - macOS Mojave / Gentoo-Xfce
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce
Go to the top of the page
 
+Quote Post
Anard
posté 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...

laugh.gif biggrin.gif


--------------------
"iMack" : GA-H97M-D3H, Intel i5 4460, 16Go DDR3, Asus GTX670 Intel HD4600, 2x SSD 256Go, HDD 500Go+Zraid 3x2To / Clover - macOS Mojave / Gentoo-Xfce
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce
Go to the top of the page
 
+Quote Post
Anard
posté 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, Asus GTX670 Intel HD4600, 2x SSD 256Go, HDD 500Go+Zraid 3x2To / Clover - macOS Mojave / Gentoo-Xfce
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce
Go to the top of the page
 
+Quote Post
Anard
posté 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, Asus GTX670 Intel HD4600, 2x SSD 256Go, HDD 500Go+Zraid 3x2To / Clover - macOS Mojave / Gentoo-Xfce
"Portable" : HP Pavilion DV3500, Intel core2 T6400, 4Go DDR3, NVidia GeForce 9300M, HDD 256Go / Grub2 - Gentoo-Xfce
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 26th April 2024 - 16:56