Chemin de fichier et applescript

flap

Membre confirmé
26 Février 2005
49
0
37
Salut !

Voilà ce bout de code :

Bloc de code:
tell application "Finder"
move (files in "rudyard:users:flap:desktop" whose file type is "mp3") to "Rudyard:Utilisateurs:flap:Musique:Podcast"
end tell
me renvoie un message d'erreur, il n'arrive pas à localiser le répertoire. J'ai fait un erreur dans le chemin peut-être ? J'ai essayé en français, ça ne marche pas mieux.

Cordialement

jb
 
Bonjour,

Pour être sûr d'avoir un bon chemin tu peux utiliser cette astuce:
Tu tapes
tell application "Finder"
posix file ""
end tell
Entre les deux guillemets après file tu fais un glisser déposer d'un fichier depuis une fenêtre du finder dans la fenêtre de l'éditeur de script (bien sûr depuis le bon dossier, là tu prends un fichier de ton dossier musiques)

Surtout, tu compiles et tu n'as plus qu'à virer le nom du fichier :) et le mot file et tu as ton chemin parfait.
 
Le problème était plus emmerdant (ahlala j'ai oublié mes réflexes de prog !). C'est tout simplement que lorsque je fais :

move ancien_emplacement to nouvel_emplacement

et bien ancien_emplacement et nouvel_amplement doivent être des chaînes de caractères, or :

files in desktop whose name contains "truc", ça ne renvoit pas une chaîne donc il faut la convertir comme cela :

(files in desktop whose name contains "truc") as string et ça marche.

De plus dans mon exemple MP3 n'est pas un Ostype valide apparemment.

Voilà il y'avais pas mal d'erreurs finalement ! En ce qui concerne la proposition de passer par du shell je pense que si Applescript offre la possibilité de déplacer lui même un fichier il vaut mieux choisir cette possibilité, le code sera un chouilla plus rapide. Bon oui c'est plus long à taper. :)

Merci beaucoup pour l'astuce Vladrow, ca me sera bien utile !
 
flap a dit:
En ce qui concerne la proposition de passer par du shell je pense que si Applescript offre la possibilité de déplacer lui même un fichier il vaut mieux choisir cette possibilité, le code sera un chouilla plus rapide. Bon oui c'est plus long à taper. :)

Je ne suis pas d'accord avec toi... J'ai essayé dans mon application qui utilise beaucoup de commandes unix et j'ai comparé en remplaçant par des commandes Applescript. C'est vraiment beaucoup plus rapide avec les commandes Unix ! Bon, s'il y en a que quelques unes, ce n'est peut-être pas trop visible, mais avec beaucoup, c'est flagrant. ;)
 
Ah ok, autant pour moi je n'avais jamais essayé. Il me semblait logique pourtant que faire appel à une autre appli demande du temps. C'est bon à savoir merci ! Mais dans mon cas ça ne changera pas grand chose !
 
Bloc de code:
    tell application "Finder"
        set name of files in "repertoire" whose name contains "nicecast" to ¬
            ((titre & " - " & (weekday of (current date)) as string) & " " & (day of (current date)) as string)
    end tell

Apparemment il y'a une erreur dans la première partie mais je n'arrive pas à voir quoi... pas d'erreur de type cette fois-ci, sans doute une bête erreur de syntaxe mais j'ai beau regarder mon paquet de doc je ne vois pas l'erreur... Merci d'avance, bientôt Applescript n'aura plus de secrets pour moi !
 
répertoire renvoit vers un répertoire, ça donne Rudyard:users:flap:music:podcast. Mais ce nom de répertoire je l'ai déjà utilisé dans une autre partie du script qui elle fonctionne... C'est bizarre.
 
flap a dit:
Voilà l'erreur :

Impossible d?obtenir every file of "Rudyard:Users:flap:Music:podcast".


"Rudyard" c'est le nom de ton disque ?

Si "titre" est une constante (d'ailleurs que tu ne defini pas) le premier fichier va etre renommé mais pas le second, car apres le premier changement de nom, le fichier existera et on ne peut renommer un fichier avec un nom de fichier existant.

Essaie de fournir un exemple fonctionnel meme s'il est plus long sinon, on travaille en aveugle.

Voici mon test :
Bloc de code:
tell application "Finder" to set the source_folder to (folder of the front window) as alias

log (source_folder)
set titre to "Mon titre" -- ???

tell application "Finder"
	set name of files in source_folder whose name contains "contest" to ¬
		((titre & " - " & (weekday of (current date)) as string) & " " & (day of (current date)) as string)
end tell

Cordialement
 
flap a dit:
C'est bon j'ai résolu tous mes problèmes ! Merci.

Pour l'édification des foules,
pour ceux qui auraient le meme probleme et chercheraient une solution,
pour ceux qui ont passés du temps à t'aider,

merci de dire d'ou venait le probleme et la solution trouvée...

Cordialement
 
Je ne sais pas au juste c'était quoi le problème, j'ai juste remis un "s" à tous mes "file" dans le script :

set name of files in [...]

Voilà, si ça peut aider...

Cordialement (quel joli mot... mais ce n'est qu'un mot n'est ce pas ? Tu as fait une faute d'accord au fait. Passons les autres.;-) )
 
flap a dit:
Je ne sais pas au juste c'était quoi le problème, j'ai juste remis un "s" à tous mes "file" dans le script :

set name of files in [...]

Voilà, si ça peut aider...

Cordialement (quel joli mot... mais ce n'est qu'un mot n'est ce pas ? Tu as fait une faute d'accord au fait. Passons les autres.;-) )


C'est le "s" qui te manquait que j'avait en trop... ;)

Je te le donne tel quel, je n'ai pas le temps de faire un paquet cadeau, Joyeux Noel.

Cordialement