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 :

Script ne veut pas se lancer associé à un dossier. surveillance mount disque -> alias [AppleScript]


Sujet :

AppleScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Script ne veut pas se lancer associé à un dossier. surveillance mount disque -> alias
    Bonjour,


    J'ai fait un script qui créé des alias en fonction des disques externes connectés. et supprime les alias (via shell) pour les disques non connectés.

    script :

    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
     
    on opening folder
     
    	tell application "Finder"
     
    		if (exists folder "Iomega 1000") and (exists folder "My Passport") then
    			make alias to folder "Divx" of disk "Iomega 1000" at folder "Movies" of folder "FJ" of folder "Users" of startup disk with properties {name:"Divx_Iomega"}
    			make alias to folder "Divx" of disk "My Passport" at folder "Movies" of folder "FJ" of folder "Users" of startup disk with properties {name:"Divx_WD"}
    		else
     
    			if not (exists folder "Iomega 1000") then
    				try
    					do shell script "rm -f /Users/FJ/Movies/Divx_Iomega"
    				end try
     
    			else
    				make alias to folder "Divx" of disk "Iomega 1000" at folder "Movies" of folder "FJ" of folder "Users" of startup disk with properties {name:"Divx_Iomega"}
    			end if
     
     
    			if not (exists folder "My Passport") then
    				try
    					do shell script "rm -f /Users/FJ/Movies/Divx_WD"
    				end try
     
    			else
    				make alias to folder "Divx" of disk "My Passport" at folder "Movies" of folder "FJ" of folder "Users" of startup disk with properties {name:"Divx_WD"}
    			end if
     
    		end if
     
    	end tell
    end opening folder

    Le code fonctionne, mais l'association au dossier, est hasardeuse... Si les alias n'existent pas alors ca marche il créé les 2 alias.. par contre si jamais je démande un disque alors il ne se met pas à jour... comment faire ?


    Merci beaucoup.

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Le script arrête de s'executer des qu'un alias deja créé est recréé...

    donc la solution un peu bourrin c est de les effacer dès le début du script...

    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
     
    on opening folder
    	tell application "Finder"
    		try
    			do shell script "rm -f /Users/FJ/Movies/Divx_Iomega"
    			do shell script "rm -f /Users/FJ/Movies/Divx_WD"
     
    		end try
     
     
    		if not (exists disk "Iomega 1000") then
    			try
    				do shell script "rm -f /Users/FJ/Movies/Divx_Iomega"
    			end try
     
    		else
    			make alias to folder "Divx" of disk "Iomega 1000" at folder "Movies" of folder "FJ" of folder "Users" of startup disk with properties {name:"Divx_Iomega"}
    		end if
     
     
    		if not (exists disk "My Passport") then
    			try
    				do shell script "rm -f /Users/FJ/Movies/Divx_WD"
    			end try
     
    		else
    			make alias to folder "Divx" of disk "My Passport" at folder "Movies" of folder "FJ" of folder "Users" of startup disk with properties {name:"Divx_WD"}
    		end if
     
     
    	end tell
    end opening folder
    Ceci dit, si il était possible de faire un Make with replacing ce serai pas mal ...

    une idée ?
    Je pourrais créé le fichier dans le dossier temporaire, puis faire un move with replacing, et enfin supprimer le ficher du dossier temp.. mais ca me parait bien compliqué non ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2013
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    J'ai continué de chercher pour affiner ma solution qui est OK à 100%

    1- je surveille le dossier Volumes (montage et démontage disque)
    2- pour chaque disque m'interessant le script se lance
    3- si le disque est monté alors il si les alias existent déjà, si ils sont présent, passage au test suivant. S'il n'existe pas cela veut dire que le disque vient d'être monté et je peux donc créer mes alias. (d'ailleurs un peu galère les nom contenant des espaces, mais ca fonctionne maintenant)

    4- quand un disque est débranché, démonté, alors les alias sont supprimés

    Je suis arrivé à ce que je voulais, donc je propose mon script si cela peut intéresser quelqu'un.

    Bonne soirée.

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
     
    -- Liste des disques à surveiller
    property myDisks : {"Disque_1", "Disque_2"}
     
     
    on adding folder items to this_folder after receiving these_items
     
     
    	repeat with aDisk in myDisks -- Tester avec les éléments de la liste 
    		set mountedDisks to paragraphs of (do shell script "/bin/ls /Volumes")
    		set dossier to "Films - "
    		set myVar to dossier & aDisk --concaténation=creation du nome de l'alias
    		tell application "Finder"
    			set alias_existe to (exists "Macbook SSD:Users:FJ:Movies:" & myVar)
     
     
    			if aDisk is in mountedDisks then
    				if (alias_existe) then
    					-- si le disque a déjà été monté alors les alias existent, on evite de recréer les meme alias et de faire une erreur qui stop le script
    				else --création des alias pour chaque disque monté à l'instant
    					set dossier to "Films - "
    					set myVar to dossier & aDisk
    					make alias to folder "Divx" of disk aDisk at folder "Movies" of folder "FJ" of folder "Users" of startup disk with properties {name:myVar}
     
    					set dossier to "Musique - "
    					set myVar to dossier & aDisk
    					make alias to folder "Musique" of disk aDisk at folder "Music" of folder "FJ" of folder "Users" of startup disk with properties {name:myVar}
     
    					set dossier to "Catalogue LR - "
    					set myVar to dossier & aDisk
    					make alias to folder "catalogue Lightroom" of folder "photos" of disk aDisk at folder "Pictures" of folder "FJ" of folder "Users" of startup disk with properties {name:myVar}
    				end if
    			end if
    		end tell
     
    	end repeat
    end adding folder items to
     
     
     
    --Quand un disque est débranché alors on supprime les alias créés précédemment 
    on removing folder items from this_folder after losing these_items
    	repeat with aDisk in myDisks
    		set mountedDisks to paragraphs of (do shell script "/bin/ls /Volumes")
     
    		if aDisk is not in mountedDisks then
     
    			tell application "Finder"
     
    				try
    					set dossierDel to "Films\\ -\\ " -- utilisation de PATH version console un " " (espace) est remplacé par "\\ "
    					set myVar to dossierDel & aDisk
    					do shell script "rm -f /Users/FJ/Movies/" & myVar -- suppression alias sans passer par corbeille
     
    					set dossierDel to "Musique\\ -\\ "
    					set myVar to dossierDel & aDisk
    					do shell script "rm -f /Users/FJ/Music/" & myVar
     
    					set dossierDel to "Catalogue\\ LR\\ -\\ "
    					set myVar to dossierDel & aDisk
    					do shell script "rm -f /Users/FJ/Pictures/" & myVar
     
     
    				end try
    			end tell
    		end if
    	end repeat
    end removing folder items from

  4. #4
    Modérateur

    Avatar de kOrt3x
    Homme Profil pro
    Technicien Informatique/Webmaster
    Inscrit en
    Septembre 2006
    Messages
    3 650
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Informatique/Webmaster
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 650
    Points : 15 771
    Points
    15 771
    Par défaut
    Bonjour,

    N'oublie pas le boton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mon bouton ne veut pas me lancer mon Userform
    Par Spyder-ferrari dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/10/2008, 16h15
  2. Lua 'veut pas se lancer
    Par Le Barde dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 29/08/2007, 14h00
  3. fichier SWF qui ne veut pas se lancer
    Par arnaud_verlaine dans le forum Flash
    Réponses: 12
    Dernier message: 06/09/2006, 09h15
  4. java web start qui veut pas se lancer
    Par calvin dans le forum JWS
    Réponses: 4
    Dernier message: 30/06/2004, 11h42
  5. [Kylix] Un programme compilé ne veut pas se lancer
    Par LightBeam dans le forum EDI
    Réponses: 1
    Dernier message: 05/08/2003, 10h15

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