# Chemin de fichier et applescript



## flap (19 Décembre 2005)

Salut !

Voilà ce bout 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


----------



## Didier Guillion (19 Décembre 2005)

Tu es sur Mac OS X ?

As tu essayé avec des "/" au lieu des ":" ?

Cordialement


----------



## OnyX (20 Décembre 2005)

Salut,

Essaye avec "Music" plutôt que "Musique".


----------



## Vladrow (20 Décembre 2005)

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.


----------



## OnyX (20 Décembre 2005)

Ce serait pas mieux d'utiliser plutôt un do shell script "mv fichiers_sources fichiers_destination" ? C'est plus rapide, je pense....


----------



## flap (22 Décembre 2005)

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 !


----------



## OnyX (22 Décembre 2005)

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.


----------



## flap (22 Décembre 2005)

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 !


----------



## flap (23 Décembre 2005)

```
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 !


----------



## Didier Guillion (23 Décembre 2005)

C'est ton script tel quel ? Si oui, c'est quoi "repertoire" ?

Cordialement


----------



## flap (23 Décembre 2005)

répertoire renvoit vers un répertoire, ça donne Rudyard:users:flap:musicodcast. Mais ce nom de répertoire je l'ai déjà utilisé dans une autre partie du script qui elle fonctionne... C'est bizarre.


----------



## Didier Guillion (24 Décembre 2005)

Donc, tu a modifié le script et il n'est pas executable, donc on ne peut pas l'essayer c'est ca ?
Et tu as une erreur, mais tu ne donne pas le message affiché ?
Difficile de t'aider...

Cordialement


----------



## flap (24 Décembre 2005)

Voilà l'erreur :

Impossible d&#8217;obtenir every file of "Rudyard:Users:flap:Musicodcast".


----------



## Didier Guillion (24 Décembre 2005)

flap a dit:
			
		

> Voilà l'erreur :
> 
> Impossible d?obtenir every file of "Rudyard:Users:flap:Musicodcast".




"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 :

```
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 (24 Décembre 2005)

C'est bon j'ai résolu tous mes problèmes ! Merci.


----------



## Didier Guillion (24 Décembre 2005)

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


----------



## flap (24 Décembre 2005)

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 file*s* 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.;-) )


----------



## Didier Guillion (24 Décembre 2005)

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 file*s* in [...]
> 
> ...




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


----------



## flap (24 Décembre 2005)

Bien joué. Mais... 

Bon, joyeux noël !


----------



## Didier Guillion (24 Décembre 2005)

flap a dit:
			
		

> Bien joué. Mais...
> 
> Bon, joyeux noël !




Mais qu'est ce que tu raconte ?

Cordialement


----------

