Renommer des photos d'après un fichier excel sous mac

Trouvé :)

Dans les "préférences système", "sécurité et confidentialité", va sur l'onglet "confidentialité".
Ensuite, sélectionne "accessibilité" et coche "automator".

Ensuite, le fichier d'automator devrait pouvoir fonctionner correctement (à confirmer)
 
Trouvé :)

Dans les "préférences système", "sécurité et confidentialité", va sur l'onglet "confidentialité".
Ensuite, sélectionne "accessibilité" et coche "automator".

Ensuite, le fichier d'automator devrait pouvoir fonctionner correctement (à confirmer)
Fait........mais ça marche pas.......en faite des le début quand tu regardes la petite fenêtre blanche il dit impossible d'ouvrir le fichier "Automator Lancher.app" y a un soucis la je pense, il doit me manqué quelques un truc que je fais pas.
 
C'est bien possible sauf que moi, je n'ai que Automator.app ...
Lance Automator et s'il s'ouvre bien, choisi "ouvrir un document" et sélectionne mon fichier
 
C'est bien possible sauf que moi, je n'ai que Automator.app ...
Lance Automator et s'il s'ouvre bien, choisi "ouvrir un document" et sélectionne mon fichier
Quand j'ouvre Automator j'ai cette fenêtre la :
Capture d’écran 2019-01-03 à 10.51.04.png
Photo1.

Ensuite ton document se présente comme ça :
Capture d’écran 2019-01-03 à 10.52.52.png
Photo2

Le document "document.wflow" quand je clique dessus ne marche pas, et quand je passe par automator la Photo1 que tu vois je peu pas le sélectionner, je peu rien sélectionner d'ailleurs par automator.
Le seul moyen que j'ai trouver pour faire qq chose c'est ce que je fais depuis le début c'est de passer en direct en cliquant sur ce fichier la qui se trouve dans MacOs mais qui au final plante.....:banghead::banghead::banghead:
Capture d’écran 2019-01-03 à 10.58.10.png
Photo3

Voila les dernières news...desolé;)
 
Ah! Google drive ne partage pas le fichier en tant que fichier mais comme un répertoire :banghead:

Bon, je le compresse ce soir et je t’envoi le nouveau lien ...
 
Lien pour le fichier compressé en zip envoyé par mail.
Décompresse le zip, lance automator et ouvre le fichier "Renommer_images.app"
Cela te permettra de voir qu'il correspond bien au script que j'ai mis ici et tu pourras le lancer ;)

Simple habitude à avoir pour la sécurité :)
 
Lien pour le fichier compressé en zip envoyé par mail.
Décompresse le zip, lance automator et ouvre le fichier "Renommer_images.app"
Cela te permettra de voir qu'il correspond bien au script que j'ai mis ici et tu pourras le lancer ;)

Simple habitude à avoir pour la sécurité :)
OK bien reçu......mais ça ne marche tjrs pas, mais j'ai l'impression que l'on avance.
Si je le lance en direct il me dit Erreur Script Shell.
Par contre quand je lance dans Automator voila ce qu'il me met :
Capture d’écran 2019-01-04 à 09.48.04.png
(Ne t'inquietes pas les noms sont bidons j'ai fais le test que sur 4 photos.)
 
OK bien reçu......mais ça ne marche tjrs pas, mais j'ai l'impression que l'on avance.
Si je le lance en direct il me dit Erreur Script Shell.
Par contre quand je lance dans Automator voila ce qu'il me met :
Voir la pièce jointe 129121
(Ne t'inquietes pas les noms sont bidons j'ai fais le test que sur 4 photos.)

Voila j'ai compris mais......
Mon tableau comporte 3 colonnes Nom, Prénom, Classe.
j'ai refais le même tableau en supprimant la 3eme colonne c'est a dire celle de la classe.
et la plus de message d'erreur, voici ce que me met l'ordi :Capture d’écran 2019-01-04 à 10.36.03.png
En passant en direct.

Et la c'est par Automator :
Capture d’écran 2019-01-04 à 10.43.15.png
Mais....au final ça change rien mes fichiers photos n'ont pas changé de noms.....:bigtears:
 
Donc une erreur sur la lecture ou le nom du fichier ...
Peux-tu regarder dans le fichier csv quelle est la valeur dans la 3ème colonne pour l’un de tes exemples ?
 
Donc une erreur sur la lecture ou le nom du fichier ...
Peux-tu regarder dans le fichier csv quelle est la valeur dans la 3ème colonne pour l’un de tes exemples ?

Voila :
Capture d’écran 2019-01-04 à 10.59.56.png
je me suis amuser a modifier le script en rajoutant la troisième colonne j'ai plus le message d'erreur mais ça modifie toujours pas. voila ce que j'ai fais :

#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
(cat "${fichier_csv}" ; echo "") | while IFS=";" read -r nom prenom classe fichier
do
if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${classe}" != "" ] && [ "${fichier}" != "" ]
then
mv "${fichier}" "${nom}.${prenom}.${classe}.jpg"
fi
done

Je te precise que j'ai simplement travailler par déduction car je ni connais rien. donc me gronde pas ! :) si j ai fais une bêtise.
 
Ta modification est correcte
Le « \r » doit correspondre au retour-chariot Windows. Bizarre que tu en ais un si tu le crées sur ton mac ...

Modifie cette ligne :
Bloc de code:
(cat "${fichier_csv}" ; echo "") | sed 's/\r//g' | while IFS=";" read -r nom prenom classe fichier

Après, la classe a-t-elle une influence sur le répertoire contenant les fichiers ?
 
Ta modification est correcte
Le « \r » doit correspondre au retour-chariot Windows. Bizarre que tu en ais un si tu le crées sur ton mac ...

Modifie cette ligne :
Bloc de code:
(cat "${fichier_csv}" ; echo "") | sed 's/\r//g' | while IFS=";" read -r nom prenom classe fichier

Après, la classe a-t-elle une influence sur le répertoire contenant les fichiers ?

Voila ligne rectifié, mais toujours au meme point....desolé.
Pour la classe oui car sa sera la phase 2 de mon projet, car l'idée étant d'optimiser un maximum la tache, je veux pouvoir renommer l'école d'un coup sans le faire classe par classe. (chose que je faisais déjà sous windows via un logiciel que ma boite payais tout les ans via une licence). n'étant plus dans cette société il faut que je trouve des solutions pour devenir autonome.
Peut être qu'il faudrait que je t'envoies a mon tour mon tableau et qq fichiers photos pour que tu voies un peu l'idée.
 
Envoie moi juste ton tableau en remplaçant les noms,prénom etc... ;)
Met simplement « nom », etc ... à la place
 
Suite à nos échange en mp, voici une version qui devrait être fonctionnelle. Par contre, il faut :
• que le sous-répertoire avec le nom de classe existe bien
• que les photos soient bien dans l'ordre

Bloc de code:
#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
classe_old=""

sed $'s/\r//g' "${fichier_csv}" | while IFS=";" read -r nom prenom classe
do
if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${classe}" != "" ]
then
  if [ "${classe_old}" != "${classe}" ]
  then
    compteur_photo=0
  fi

  classe_old=${classe}
  compteur_photo=$((compteur_photo + 1))

  fichier=$(ls "${repertoire_photo}/${classe}" | head -${compteur_photo} | tail -1)
  mv "${repertoire_photo}/${classe}/${fichier}" "${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg"
fi
done
 
Alors Ca marche met un petit peu... on avance !!
J'ai remplacer ton script en lieu et place de l'ancien. Lorsque que j'arrive a la phase "Dossier des Images" je clique sur le dossier "Indiv". Il mouline et me renomme qu'une seule photo et pas avec le bon Numéro.
il me renomme a chaque fois la première photo de la classe 6°B avec le numéro de la seconde (photo a l'appui)
Capture d’écran 2019-01-08 à 18.05.26.png
PS: J'ai renommé les photos 6°A 1A =01 2A=02, 6°B 1B=03 2B=04. (pour avoir des numéros plus simple)
Voila.....desolé ! mais tu est pas loin j'en suis sur...:)
 
Chez moi, cela fonctionne ...
"fichier_csv" était "/Users/***/Downloads/Ecole Trucmuche/Listing/Liste.csv"
"repertoire_photo" était "/Users/***/Downloads/Ecole Trucmuche/Indiv"

A noter que tu as un répertoire "6°A.jpg" dans ton fichier csv de test au lieu de "6°A" ;)

J'ai rajouté la ligne "echo mv..." dans la version ci-dessous pour qu'on ait un peu plus d'info sur ton erreur ...
Bloc de code:
#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
classe_old=""

sed $'s/\r//g' "${fichier_csv}" | while IFS=";" read -r nom prenom classe
do
if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${classe}" != "" ]
then
  if [ "${classe_old}" != "${classe}" ]
  then
    compteur_photo=0
  fi

  classe_old=${classe}
  compteur_photo=$((compteur_photo + 1))

  fichier=$(ls "${repertoire_photo}/${classe}" | head -${compteur_photo} | tail -1)
  echo mv "${repertoire_photo}/${classe}/${fichier}" "${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg"
  mv "${repertoire_photo}/${classe}/${fichier}" "${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg"
fi
done
 
J'ai oublié que la sortie du script ne sera pas visible ...
Donc voici une meilleure version permettant d'avoir un fichier de log ;)

Bloc de code:
#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
classe_old=""

sed $'s/\r//g' "${fichier_csv}" | while IFS=";" read -r nom prenom classe
do
if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${classe}" != "" ]
then
  if [ "${classe_old}" != "${classe}" ]
  then
    compteur_photo=0
  fi

  classe_old=${classe}
  compteur_photo=$((compteur_photo + 1))

  fichier=$(ls "${repertoire_photo}/${classe}" | head -${compteur_photo} | tail -1)
  echo -n "Renommer ${repertoire_photo}/${classe}/${fichier} en ${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg ... " >> "${fichier_csv}.log"
  mv "${repertoire_photo}/${classe}/${fichier}" "${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg"
  if [ $? -eq 0 ]
  then echo ok >> "${fichier_csv}.log"
  else echo ko >> "${fichier_csv}.log"
  fi
fi
done

Une fois le script lancé, tu auras un fichier de log au même endroit que le fichier csv.
Le contenu sera le suivant. ok ou ko à la fin de la ligne suivant le résultat du renommage
Bloc de code:
Renommer /Users/***/Downloads/Ecole Trucmuche/Indiv/6°A/IMGM9430 4.JPG en /Users/***/Downloads/Ecole Trucmuche/Indiv/6°A/A.1.6°A.jpg ... ok
Renommer /Users/***/Downloads/Ecole Trucmuche/Indiv/6°A/IMGM9430.JPG en /Users/***/Downloads/Ecole Trucmuche/Indiv/6°A/A.2.6°A.jpg ... ok
Renommer /Users/***/Downloads/Ecole Trucmuche/Indiv/6°B/IMGM9430 2.jpg en /Users/***/Downloads/Ecole Trucmuche/Indiv/6°B/B.1.6°B.jpg ... ok
Renommer /Users/***/Downloads/Ecole Trucmuche/Indiv/6°B/IMGM9430 3.JPG en /Users/***/Downloads/Ecole Trucmuche/Indiv/6°B/B.2.6°B.jpg ... ok
 
Capture d’écran 2019-01-22 à 20.39.25.png
Voila mon fichier
j'ai toujours qu'un seul fichier qui change de non le B.2.6°B.jpg.
le B.1.6°B.jpg malgré que la ligne tu marque OK le non ne change pas.
 
Je récupérais la liste des fichiers présent dans le répertoire à chaque fois avant d'en renommer un, forcément ...
D'où le "03.jpg" renommé en "B.1.6°B.jpg" puis en "B.2.6°B.jpg"
La version suivante devrait résoudre ce bug.

Je stocke la liste des fichiers présents (jpg uniquement) dans ton répertoire dans un fichier temporaire "liste_image.tmp". Cela évitera de traiter des fichiers cachés ou autre.
Ce fichier tmp pourra être effacé et sera dans le répertoire des images.
En prime, les logs seront plus détaillées (et le fichier de log écrasé à chaque passage).

Bloc de code:
#!/bin/bash

fichier_csv="$1"
repertoire_photo="$2"

if [ ! -d "${repertoire_photo}" ];then
echo "Répertoire incorrect";
exit 1
fi

cd "${repertoire_photo}"
classe_old=""

echo "Fichier de log" > "${fichier_csv}.log"
sed $'s/\r//g' "${fichier_csv}" | while IFS=";" read -r nom prenom classe
do
if [ "${nom}" != "" ] && [ "${prenom}" != "" ] && [ "${classe}" != "" ]
then
  if [ "${classe_old}" != "${classe}" ]
  then
    compteur_photo=0
    ls "${repertoire_photo}/${classe}" | egrep -i "\.jpg$" > "${repertoire_photo}/liste_image.tmp"
    echo "" >> "${fichier_csv}.log"
    echo "Liste des fichiers du répertoire ${repertoire_photo}/${classe} :" >> "${fichier_csv}.log"
    cat "${repertoire_photo}/liste_image.tmp" >> "${fichier_csv}.log"
    echo "" >> "${fichier_csv}.log"
  fi

  classe_old=${classe}
  compteur_photo=$((compteur_photo + 1))

  fichier=$(head -${compteur_photo} "${repertoire_photo}/liste_image.tmp" | tail -1)
  echo -n "Renommer ${repertoire_photo}/${classe}/${fichier} en ${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg ... " >> "${fichier_csv}.log"
  mv "${repertoire_photo}/${classe}/${fichier}" "${repertoire_photo}/${classe}/${nom}.${prenom}.${classe}.jpg"
  if [ $? -eq 0 ]
  then echo ok >> "${fichier_csv}.log"
  else echo ko >> "${fichier_csv}.log"
  fi
fi
done