IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Créer un dossier avec sous dossier avec automator ou applescript


Sujet :

AppleScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Graphiste
    Inscrit en
    Décembre 2013
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2013
    Messages : 82
    Par défaut Test sur 2° script
    Bonjour,
    J'ai travaillé sur le 2° script de PBell qui marche très bien mais pour l'adapter à mon cas j'ai essayé de le modifier mais sans succès.
    Comme prévu, à l'ajout d'un fichier dans le dossier Nom_Client/PUB/--PDF, se crée un dossier dans "Save:Assistantes:AFC:" qui porte le nom du dossier parent, donc le nom PUB. Or je souhaiterais qu'on puisse remonter d'un cran pour que le dossier créé s'appelle Nom_Client (qui est le container de PUB lui même container de --PDF). Penses-tu que cela est possible ?
    J'ai essayé d'intervenir sur les 2 lignes ci-dessous mais en vain :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	set Dos_client to container of Mon_Dossier -- lit de dossier parent du dossier dans lequel on a déposé les fichiers
    		set Nom_Client to name of Dos_client
    Par ailleurs, le nouveau dossier créé (qui portera donc le même nom que le dossier Nom_Client) doit comporter un sous-dossier "ENVOYE" mais les fichiers ne doivent pas entrer dans ce sous-dossier, ils doivent resté à la racine du dossier Nom_Client (en fait on peut considéré que ce sous-dossier ne sert à rien mai il faut qu'il y soit (bizarre... mais je me comprend).

    PBell, si tu as la réponse à mes 2 soucis, je suis preneur

  2. #2
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour,
    Tout d'abord, la réponse à la question "est-ce possible" est OUI !
    Forcément, il y a une solution qui ne doit pas être bien compliquée.

    Pour la mettre en oeuvre, il faut être sûr de bien comprendre.
    C'est dans le script d'action de dossier qu'il faut modifier : c'est clair !

    Le script se déclenche à l'ajout dans Dossier_Client / PUB / --PDF.
    il ajoute pour l'instant un dossier dans AFC avec le nom "PUB" et tu veux qu'il se nomme "Dossier_Client". Donc en décomposant :

    L'action de dossier est sur Mon_Dossier qui est "--PDF"
    Son container est "PUB" et le container de "PUB" est "Dossier_Client".
    Pour avoir son nom, il suffit donc de prendre le container du container !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tell application "Finder"
    set Dos_client to container of  container of Mon_Dossier -- lit de dossier parent du parent du du dossier dans lequel on a déposé les fichiers
    set Nom_Client to name of Dos_client
    end tell
    Cordialement

  3. #3
    Membre confirmé
    Homme Profil pro
    Graphiste
    Inscrit en
    Décembre 2013
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2013
    Messages : 82
    Par défaut Merci encore, tu me sauves...
    Salut PBell,

    Dans la vie,il y a ceux qui maîtrisent et il y a ceux qui pataugent.
    Moi, je fais partie de la 2° catégorie et toi de la 1°, c'est là notre différence.

    Merci pour tout, ça fonctionne comme je le voulais, c'est parfait bien que parfois le même fichier est en double : celui portant le nom original et celui avec le BD devant. Ce n'est pas tout le temps mais ça arrive quelque fois. Je mets ça sur le compte d'un problème matériel (ma session Leopard est sur DD externe, donc ça pourrait peut être expliquer ces dysfonctionnements).
    En tout cas merci pour tout et je vais de ce pas te mettre un pouce vert de plus.

    A bientôt.

  4. #4
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour,
    Nous avons tous pataugé un jour sur certains domaines.
    Je dirai plutôt qu'il y a ceux que se contentent de patauger et ceux qui décident de progresser. Ta présence sur ce forum te classe dans la seconde catégorie !

    Quant au nom parfois en double, il peut y avoir des explications:
    Lorsque le fichier est copié avec BD- devant, en fait cela se passe en 2 étapes :
    1) copie du fichier avec le même nom
    2) ajout de BD- devant

    Il est possible que la copie se passe mal, ou lentement.
    Sur certains serveurs distants, il peut même se faire que la seconde étape plante (ce que tu ne vois pas car le script action de dossier est en tâche de fond) car le fichier n'est pas encore là.
    Il y a des techniques (décrites dans l'article sur les actions de dossier) pour forcer Applescript à attendre la fin de la copie avant de changer de nom.

    Si ce n'est pas trop fréquent, OK, sinon, il faut envisager une modification du code entre l'action "Set N_Fichier to duplicate..." et l'action "set name...".

    il faut ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	-- attente de fin de téléchargement (vérification que la taille ne change plus)
    	try
    		set OldSize to -1
    		repeat until (size of N_Fichier) = OldSize
    			set OldSize to (size of N_Fichier)
    			delay 0.5
    		end repeat
    	end try
    Ce morceau de code boucle tant que la taille du fichier (sur le dossier destinataire de la duplication) change. Lorsque cette taille ne change plus..s'est que la copie est terminée.
    Si c'est un DD externe, même lent, c'est OK. Si c'est un serveur distant avec une liaison vraiment chaotique, alors il se peut que les temps d'attente entre paquets soient supérieur à 0.5 seconde. Il faudra changer le "delay 0.5" en "delay 1" par exemple.
    Au delà, il faut se préoccuper de la vitesse de transfert !!
    Bonne journée

  5. #5
    Membre confirmé
    Homme Profil pro
    Graphiste
    Inscrit en
    Décembre 2013
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2013
    Messages : 82
    Par défaut Dernière info...
    Salut PBell,

    J'ai incorporé tes dernières lignes de code mais toujours même soucis. Des ça marche et des fois pas, autrement dit des fois le fichier se renomme avec BD- devant, des fois je me retrouve avec 2 fichier, celui portant le nom original et celui avec le BD- devant. J'ai portant passé le Delay sur 1 mais rien ne change.
    Bref, peut-être que finalement je ne renommerais pas les fichiers.
    C'est vrai que ma session Leopoard étant sur DD externe et exécutant tous ces scripts sur Leopard, le système s'emmêle peut-être les pinceaux.

    Dernière demande d'aide si je peux me permettre :
    Je souhaiterais inclure dans l'action de dossier Action PDF une action que j'ai définie sur automator. il s'agit de la lgine suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set nomProcessus to (((path to workflows folder from user domain) as string) & "PDFLight.app")
    En général rien ne se passe, le script s'execute sans tenir compte de cette ligne, ou alors le srcipt ne s'exécute pas du tout (sans doute parce que je place cette ligne au mauvais endroit.
    En fait je voudrais alléger la taille de mon fichier PDF entrant grâce à ce processus automator.

    Comment faire en sorte pour inclure cette action supplémentaire dans l'action de dossier PDF ?

  6. #6
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonjour,
    Si tu as le dialog ligne 36 et pas ligne 37, effectivement cela signifie que la ligne 37 plante !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tell application "System Events" to attach action to (Chemin_AFC & Nom_Client) as alias using (nomProcessus as string)
    Que fait cette ligne ? Elle doit attacher l'action de dossier "nomProcessus" dans le dossier désigné par "Chemin_AFC & Nom_Client"

    Donc soit :
    1) Le fichier nomProcessus n'existe pas dans le dossier ~Bilbiothèque / Scripts/ Folder Action Scripts
    2) "Chemin_AFC & Nom_Client" n'est pas un nom de dossier valide (et qui existe)
    ... voir les 2 !

    Compte tenu du reste du script, j'aurai tendance à penser que c'est le 1). Il faut vérifier que ce script est bien à l'endroit où il devrait être.
    En cas de doute, il faut ajouter en ligne 36 un display dialog pour afficher les 3 variables Chemin_AFC, Nom_Client et enfin NomProcessus

    Tu trouveras sûrement ce qui ne va pas avec cette nouvelle trace.

    Cordialement

  7. #7
    Membre confirmé
    Homme Profil pro
    Graphiste
    Inscrit en
    Décembre 2013
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2013
    Messages : 82
    Par défaut Je vais essayé
    Salut PBell,

    Bien reçu ta réponse mais comment faire ce que tu me proposes, soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    En cas de doute, il faut ajouter en ligne 36 un display dialog pour afficher les 3 variables Chemin_AFC, Nom_Client et enfin NomProcessus
    Dois-je utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tell application "Finder" to display dialog "je suis à la ligne xxx"
    ou dois-je personnaliser ce petit bout de code ?

    A +

  8. #8
    Membre émérite

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 606
    Par défaut
    Bonsoir,
    il est possible de supprimer un fichier par AS bien sûr, mais pas par anticipation.
    Une action de dossier se déclenche qu'une fois le fichier enregistré dans le répertroire (pas forcément lorsque toutes ses données soient copiées), mais pas avant !

    Pour ce qui est du problème Automator, j'avoue être perplexe. j'ai le sentiment (à confirmer) qu'il s'agit d'un problème de temps.
    La réduction de taille du PDF et la copie se déroulent peut être trop vite , l'une avant que l'autre soit finies.

    Cordialement

  9. #9
    Membre confirmé
    Homme Profil pro
    Graphiste
    Inscrit en
    Décembre 2013
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Graphiste
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2013
    Messages : 82
    Par défaut Bug détecté
    Salut PBell,
    C'est la rentrée pour tout le monde et je me penche à nouveau sur ces satanés scripts qui fonctionnent presque comme je le souhaiterais.
    Pour mémoire : un fichier PDF entre dans un dossier (HDD:TRAVAUX:ActionDossierTravauxEncours:AFC:Nom_Client:--PDF auquel est attachée une action de dossier (Action PDF.scpt), il se duplique alors dans un autre dossier (SNOW LEOPARD:TRAVAUX:ASSISTANTES:Nom_Client) auquel j'ai attaché une action de dossier Automator pour réduire le poids de ce fichier PDF.
    Je vais directement à mon point de blocage (les discussions précédentes te montreront comment tu m'as permis de créer un dossier portant le même nom que le dossier parent etc...). Bref tout nickel sauf que :
    Lorsque les fichiers pdf entrent pour la 1° fois dans le dossier HDD:TRAVAUX:ActionDossierTravauxEncours:AFC:Nom_Client:--PDF: tout se passe comme je le souhaite ; mon action Automator s'applique.
    Mais si je mouline à nouveau un fichier déjà présent, il est bien écrasé dans HDD:TRAVAUX:ActionDossierTravauxEncours:AFC:Nom_Client:--PDF: puis il bascule bien dans le dossier SNOW LEOPARD:TRAVAUX:ASSISTANTES:Nom_Client mais là, mon action Automator ne s'exécute plus.
    Alors, seule solution, essayer de débuguer comme tu me l'avais suggéré. J'ai inséré la ligne tell application "Finder" to display dialog "je suis à la ligne xxx" au début de mon script Action PDF.scpt (ligne 6) puis inséré encore une fois (en ligne 11). Je lance le script et les 2 boites de dialogue apparaissent. Donc tout va bien et je continue ainsi en laissant la 1° instruction en ligne 6 et en descendant ligne par ligne la 2° instruction. Tout fontionne bien jusqu'à la ligne 36. Mais, lorsque je positionne la 2° instruction en dessous de la ligne 37, 1 seule boite de dialogue apparait, ce qui signifierait qu'il y ait une bug.

    Pourrais-tu m'indiquer comment résoudre ce bug ?

    A bientôt.

    Voilà ci-dessous le code de mon script Action PDF avec les 2 lignes de débogage en ligne 6 et ligne 39 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    -- Script à enregistrer dans Bibliothèque / Scripts / Folder Action Scripts
    -- On suppose, dans le second script que celui-ci s'appelle "Action PDF"
     
    on adding folder items to Mon_Dossier after receiving Liste_Fichiers
     
    	tell application "Finder" to display dialog "je suis à la ligne xxx"
     
    	-- bien définir le nom du chemin selon qu'il s'agit d'un disque distant ou d'un dossier sur le même disque !
    	-- par exemple : Set Chemin_AFC to "Volumes:Mon_Disque_Serveur:Users:Nom_user:Save:Assistantes:AFC:"
    	set Chemin_AFC to "SNOW LEOPARD:TRAVAUX:Assistantes:AFC:"
     
    	tell application "Finder"
    		set Dos_client to container of container of Mon_Dossier -- lit le dossier parent du sous dossier contenant le dossier dans lequel on a déposé les fichiers
    		set Nom_Client to name of Dos_client
     
    		repeat with Fichier in Liste_Fichiers -- boucle car il est possible que l'on aie déposé plusieurs fichiers !
    			set Nom_Fichier to name of Fichier
    			-- Si le dossier Nom_Client dans le dossier AFC n'existe pas : on le crée
    			if not (exists (Chemin_AFC & Nom_Client)) then make new folder in Chemin_AFC with properties {name:Nom_Client}
     
    			set N_Fichier to duplicate Fichier to folder (Chemin_AFC & Nom_Client) with replacing --copie du fichier initial vers Chemin_AFC : Nom_Client :
     
    			--- attente de fin de téléchargement avant de renommer (vérification que la taille ne change plus)
    			try
    				set OldSize to -1
    				repeat until (size of N_Fichier) = OldSize
    					set OldSize to (size of N_Fichier)
    					delay 1
    				end repeat
    			end try
    		end repeat	
    	end tell
     
     
    	tell application "System Events" to set nomProcessus to (((path to workflows folder from user domain) as string) & "ESSAI.workflow")
     
    	tell application "System Events" to attach action to (Chemin_AFC & Nom_Client) as alias using (nomProcessus as string)
     
    	tell application "Finder" to display dialog "je suis à la ligne xxx"
     
    end adding folder items to

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Batch] overwrite MOVE dossier et sous dossier avec fichiers
    Par sencha dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 14/03/2015, 18h20
  2. Réécriture d'URL avec sous dossier
    Par cedrick21 dans le forum Apache
    Réponses: 1
    Dernier message: 12/12/2014, 19h17
  3. Include avec sous dossiers
    Par anto2b dans le forum Langage
    Réponses: 4
    Dernier message: 24/04/2013, 19h43
  4. [Snow Leopard] Problème de droits avec un dossier, ses sous-dossier et ses fichiers
    Par rambc dans le forum Apple
    Réponses: 21
    Dernier message: 07/03/2010, 10h18
  5. lister un répertoire avec sous-dossiers
    Par helene_53 dans le forum Général Java
    Réponses: 7
    Dernier message: 27/03/2008, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo