Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Les actions de dossier avec AppleScript
Devenez extrêmement productif sous Mac

Le , par PBELL

0PARTAGES

2  0 
Bonjour à tous,

Les actions de dossier sur Mac permettent de réaliser automatiquement des tâches variées qui deviennent vite indispensables.
Cependant, les créateurs de ces actions sont régulièrement confrontés à des problèmes, principalement du fait d'une connaissance partielle des mécanismes en jeu.

Pour répondre aux multiples demandes d'aide dans ce domaine, j'ai réalisé mémo pour ceux qui veulent écrire des actions de dossier en AppleScript.
Les nombreux exemples de scripts commentés devraient permettre d'utiliser toute la puissance des actions de dossier pour vos scripts.

Voici le lien vers cet article :http://mac.developpez.com/cours/actiondossierapplescript/

Et vous, avez-vous rencontré des problèmes sur des actions de dossiers ? Comment les avez-vous résolus ?

Bonne journée à tous.

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de kOrt3x
Modérateur https://www.developpez.com
Le 04/06/2013 à 8:53
Merci à toi pour cet article.
Il est vrai que les actions de dossier sous Mac OS X sont méconnus et donc très peu utilisés, mais ils peuvent être très pratiques.

0  0 
Avatar de RyuAutodidacte
Expert confirmé https://www.developpez.com
Le 28/10/2019 à 14:14
Bonjour PBELL,

Merci pour cette article d'une grande aide et qui va m'enlever certaines épines du pieds

J'espère pouvoir l'adapter pour du flux Indesign => PDF dont plusieurs Dossier IN (3) de réceptions de fichiers selon le type de PDF voulu avec redirection dans l'un des 3 dossiers Out

Edit : concernant le "@" dans ton article pour les permissions des fichiers que l'on peut voir avec ls -l Fichier, voilà ce que j'ai trouvé :
http://www.macpuissancedix.com/937.php
Extrai : … Le résultat de la commande se trouve sur la dernière ligne de la figure 1. Le groupe de 9 caractères dont il a été question est précédé par un tiret, et terminé par un @ (qui indique qu'il y a des attributs étendus) ….

et ceci aussi en complément :
En faisant un test avec le ls -l je suis tombé avec un fichier vidéo dont il n' avait pas les attributs étendus, du coup je pense (donne moi ton avis),
qu'il serait peut être judicieux de mettre le code sans prendre en compte l'@
Code applescript : Sélectionner tout
repeat until (LS_Debut = "-rwx") and not (PosArobase = "@") and not (LS_Fin = "------")
deviendrait :
Code applescript : Sélectionner tout
repeat until (LS_Debut = "-rwx")  and not (LS_Fin = "------")

à voir …

je continue à travailler dessus car qq chose me titille dans le cas ou le script ne trouve pas le fichier provoquant une erreur "number 1",
mais dans ce cas là on risque d'avoir une boucle infini.
Et le problème pour l'instant de mon coté, je vois pas comment lui dire de sortir de la boucle avec un message au bout d'un certain temps

PS : je suis reparti d'un code que tu as fais sur le forum
En attendant j'ai fait cela en phase de tests (j'ai pris un fichier plus lourd, mais à la base se sera avec des fichiers InDesign to PDF) :
Code applescript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
set A to POSIX file "/Users/UserName/Documents/Fichiers/Film/monfilm.mp4"  
set Desti to "/Users/UserName/Desktop/Scripts/HOT FOLDER/Film HD_IN" 
set B to POSIX file Desti 
  
tell application "Finder" 
	ignoring application responses 
		duplicate A to B 
	end ignoring 
	--display dialog "Copie lancée" 
end tell 
  
  
activate 
if CopieTerminee(A, Desti) then 
	display dialog "copie terminée" 
else 
	display dialog "copie non terminée ou fichier non existant" 
end if 
  
  
on CopieTerminee(Source, Destination) -- retourne "true" quand la copie du fichier Source vers le directory Destination est terminée 
	tell application "Finder" to set Nom_Source to name of file Source 
	set Fichier to quoted form of (Destination & "/" & Nom_Source) 
	set Check_Droit to "xxx" 
	set Cpt to 0 
	repeat until Check_Droit contains "-rwxrwxrwx" 
		set Cpt to Cpt + 1 
		--display dialog Cpt 
		try 
			set Check_Droit to do shell script "ls -l " & Fichier 
		on error 
			set Check_Droit to "xxx" 
		end try 
		if Cpt = 10 then exit repeat 
	end repeat 
	if Cpt = 10 then 
		return false 
	else 
		return true 
	end if 
end CopieTerminee

Edit 2 :
l'autre version (PS : pour ma par je ne ferais pas de copie, mais je récupérerai le chemin des fichiers à traiter dans un fichier texte via la commande "sed")
Code applescript : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
set A to POSIX file "/Users/UserName/Documents/Fichiers/Film/monfilm.mp4" 
set B to POSIX file "/Users/UserName/Desktop/Scripts/HOT FOLDER/Film HD_IN" 
tell application "Finder" 
	ignoring application responses 
		duplicate A to B 
	end ignoring 
	--display dialog "Copie lancée" 
end tell 
activate 
if CopieTerminee(A, B) then 
	display dialog "copie terminée" 
else 
	display dialog "copie non terminée ou fichier non existant" 
end if 
  
on CopieTerminee(Source, Destination) -- retourne "true" quand la copie du fichier Source vers le directory Destination est terminée 
	set Lsize to -1 
	try 
		tell application "Finder" to set Nom_Source to name of file Source 
		log Nom_Source 
		set FichierCopie to (Destination as string) & ":" & Nom_Source 
		delay 0.1 
		set X to 0 
		repeat until Lsize = X 
			set Lsize to X 
			tell application "Finder" to set X to physical size of file FichierCopie 
			delay 0.3 
		end repeat 
		return true 
	on error 
		return false 
	end try 
end CopieTerminee 
  
--tell application "Finder" to set X to physical size of file POSIX file "/Users/kbelmehdi/Desktop/Scripts/HOT FOLDER/IN/668-669_FRG0919.indd"
0  0