Applescript

soiziclecros

Membre expert
Club iGen
23 Janvier 2011
1 043
61
Lyon
Bonjour

J'ai créé un "service finder" avec Automator qui marche bien mais en fait j'ai besoin d'un script et je n'y arrive pas
Il suffit de transférer le contenu d'un dossier "EIP-faits" dans le dossier "EIP-transmis" Le script pourra être fait automatiquement à la fin de ChronoSync

J'ai essayé ceci avec des dossiers bidon A1 et A2
tell application "Finder"

set theFiles to every file of (POSIX file "Users/soizic/A1")


move theFiles to (POSIX file "Users/soizic/A2")

end tell

Mais il cale sur "every file" avec le message :
error "Erreur dans Finder : Il est impossible d’obtenir every file of file \":Users:soizic:A1\"." number -1728 from every file of file ":Users:soizic:A1"

je ne comprend pas les : qui apparaissent.


Si quelqu'un peut m'aider je le remercie vivement.
 
Dernière édition:
Essaie d'entrer ton chemin d'accès avec les : à la place des /
 
Bonjour,
Si le chemin de ton dossier est : "Users/soizic/A1" le script doit être:

tell application "Finder"
set theFiles to every file of entire contents of folder (POSIX file "Users/soizic/A1")
move theFiles to POSIX file "Users/soizic/A2"
end tell

Ceci déplace tous les fichiers contenus dans le dossier "Users/soizic/A1" dans le dossier "Users/soizic/A2"
 
Hélas j'ai copié ton script :
tell application "Finder"

set theFiles to every file of entire contents of folder (POSIX file "Users/soizic/A1")

move theFiles to POSIX file "Users/soizic/A2"

end tell


et voilà le triste résultat :
error "Erreur dans Finder : Le gestionnaire AppleEvent a échoué." number -10000 from folder (file ":Users:soizic:A1")

J'ai essayé simplement

set origFolder to "Users/soizic/A1" qui me donne le résultat
"Users/soizic/A1"


Je suis (ou plutôt j'ai été) meilleure en langage Unix, il serait peut-être plus facile d'écrire un script via le terminal ?

mv ~/A1/* ~/A2

marche parfaitement mais comment faire un script avec cet ordre bien simple ?
Merci
 
Dernière édition:
Bonjour,

Je ne connais pas le langage unix!
J'ai essayé le script chez moi il fonctionne sans problème .
Tes 2 dossiers sont bien directement à la racine du dossier (ta petite maison)
Pour être sur, tu enlèves "users/soizic/A1" et fait fait glisser en lieu et place ton dossier directement sur la fenêtre, tu seras sur d'avoir le bon chemin et idem pour le dossier A2.

Il manque un / devant users ...

Edit: en supposant que le nom de ta petite maison soit Soizic et que ton dossier A1 soit sur le bureau, le chemin doit être :
"/Users/Soizic/Desktop/A1"

Edit 2: ton script unix peut être exécuter dans un applescript avec la commande do shell script ce qui donne:

tell application "Finder"
do shell script "mv ~/A1/* ~/A2"
end tell
 
Dernière édition:
Je viens de trouver une solution en passant par Automator :
je choisis "exécuter un script AppleScript, je met dedans :

on run {input, parameters}
tell application "Terminal"
activate
do script with command "mv ~/ESSAI/A1/* ~/ESSAI/A2"
end tell
end
run

et ça marche !!!
 
avec 3 solutions possibles ça devrait le faire...:)

Bonne journée
 
pour passer une commande UNIX dans un script Applescript

do shell script "mv ~/ESSAI/A1/* ~/ESSAI/A2"

En principe cette seule ligne dans le script Applescript est suffisante.
 
Je sens que soizic :coucou: a besoin qu'un f...... de m.... faiseur de manières vienne embrenner enbrouiller le tableau.

Au cas où l'on voudrait déplacer des fichiers d'un dossier A1 dans un dossier A2 de telle sorte que :

- les fichiers soient supprimés de la source A1

- qu'il y ait mise-à-jour incrémentale du contenu de A2 sans effacement des fichiers différents déjà en place​

=> alors il faudrait rajouter l'option -n (comme new) après l'appel de l'utilitaire mv > ce qui donnerait donc :
Bloc de code:
do shell script "mv -n ~/ESSAI/A1/* ~/ESSAI/A2"

Personnellement > je ne préconiserais pas dans un script une adresse relative à l'espace-racine du compte utilisateur comme ~/ > mais au contraire une adresse absolue qui serait alors /Users/soizic/ => ce qui donnerait donc la ligne complète :
Bloc de code:
do shell script "mv -n /Users/soizic/ESSAI/A1/* /Users/soizic/ESSAI/A2"
 
Merci au f… de m… "Fantaisiste de Macgé "
Je note pour les adresses absolues ; je n'ai pas besoin d'un service incrémental, les photos du deuxième dossier (sur le MBP) seront effacées dès qu'elles seront enregistrées sur le mac de bureau. Mais grâce à vous je révise Unix !
 
Au cas où cela pourrait servir à d'autres, voici mon script final
Attention avec images cela ne marche pas, il faut mettre pictures

do shell script "mv /Users/soizic/pictures/EIP_à_SAUVER/* /Users/soizic/pictures/EIP_transmis_SYNAS"
display dialog ("transfert fini !")
 
Alors tout roule...

in cauda venenom

Tu vois le résultat quand on se complique la vie au départ ? On a besoin de scripts à l'arrivée pour gérer des opérations. Or : quelle est la racine de toutes les complications informatiques pour un utilisateur ? Les données graphiques. Et tu sais comment couper à la racine cette génération de complications ? - En restituant au texte le privilège sur l'image...
361608_original.png