AppleScript : Renommer fichiers d'une liste par une autre

Jetsurfer

Membre actif
1 Février 2001
383
4
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.
 
Bonjour,

Oui, il te faut une boucle.

Voici le script
Bloc de code:
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
 
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 "comme arguments" pour les données en entrée.
Copie et colle ce code
Bloc de 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
Bloc de 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