# AppleScript : Renommer fichiers d'une liste par une autre



## Jetsurfer (1 Février 2011)

Salut les As,

voila pour faire simple, avec Automator et le Photoshop Actions pack j'ai fait un processus pour des planches contacts, cela fonctionne mais les planches contacts sont sauvées avec un nom générique.

Je voudrais pouvoir une fois les fichiers sauvés, renommer ceux-ci avec le nom de la photo originale.

J'ai donc dans le dossier 1, les photos originales et dans le dossier 2 les planches contacts.
Je peux récupérer la liste dans chaque dossier.

tell application "Finder"
	set dossierOriginal to ¬
		choose file with prompt ¬
			"Choisissez les photos originales" default location (path to documents folder) ¬
			with multiple selections allowed

	set dossierPlanche to ¬
		choose file with prompt ¬
			"Choisissez les planches contacts à renommer" default location (path to documents folder) ¬
			with multiple selections allowed

end tell

Ensuite je voudrais renommer chaque photo dans le dossierPlanche par celui se trouvant dans le dossierOriginal.
Je me doute qu'il faut employer une boucle repeat mais là je m'y perds un peu.

Comment puis je faire?

Merci d'avance pour votre réponse.


----------



## Anonyme (2 Février 2011)

Bonjour,

Oui, il te faut une boucle.

Voici le script
	
	



```
set dossierOriginal to ¬
	choose file with prompt ¬
		"Choisissez les photos originales" default location (path to documents folder) ¬
		with multiple selections allowed

set dossierPlanche to ¬
	choose file with prompt ¬
		"Choisissez les planches contacts à renommer" default location (path to documents folder) ¬
		with multiple selections allowed

set tc to (count dossierOriginal)
tell application "Finder" to repeat with i from 1 to tc
	set name of (item i of dossierPlanche) to name of (item i of dossierOriginal)
end repeat
```


----------



## Jetsurfer (2 Février 2011)

Un tout grand merci ces quelques lignes de code me feront gagner beaucoup de temps.
Merci.
Thierry


----------



## Anonyme (2 Février 2011)

Bonjour,

Vu que tu autilise *Automator*, ce serait plus simple d'utiliser une variable et un shell.

Voici un exemple de comment faire ça :

Dans *Automator* 
*action 1* - "Obtenir les éléments Finder sélectionnés"
*action 2*-  "Exécuter un script Shell"
Dans l'action "Exécuter un script Shell" :
Sélectionne le shell "*/bin/bash*" et sélectionne "c*omme arguments*" pour les données en entrée.
Copie et colle ce code

```
for f in "$@"
do
	echo "$f"
done
```

*action 3*-  "Définir la valeur de la variable" Nouveau stockage, récupère les chemins des fichiers et l'envoie en entrée.

*action 4*- ton action photoshop, s'il donne en sortie les fichiers créés.

*action 5*-  "Obtenir la valeur de la variable" Nouveau stockage
Ici, le résultat sera : le contenu de la variable (fichiers originaux) + la sortie de l'action précédente (fichiers créés par Photoshop).

*action 6*-  "Exécuter un script Shell"
Dans l'action "Exécuter un script Shell" :
Sélectionne le shell "*/bin/bash*" et sélectionne "*comme arguments*" pour les données en entrée.
Copie et colle ce code

```
let "nbr=$# / 2"
j=nbr
args=("$@")
for (( i=0;i<$nbr;i++)); do
  nom=${args[j]##*/}
  dossier=${args[i]%/*}
  /bin/mv -f "${args[i]}" "$dossier/$nom"
  ((j++))
done
```
Ce shell renomme les fichiers créés selon le nom des fichiers originaux


----------

