10.14 Mojave Chercher pour renommer en lot

Nouvoul

Membre expert
Club iGen
4 Mars 2005
3 817
536
117
Bonjour,
Je ne crois pas qu'il y ait de solution "clés en main", mais à tout hasard:
Passant de Aperture/Lightroom à ON1 PhotoRaw, j'ai pas mal de photos qui ne sont pas reconnues par ce dernier car j'en avais modifié les noms et elles n'ont plus l'extension .jpg ou .jpeg, voire .raw.
Comme ces photos sont disséminées dans pas mal de dossiers/sous-dossiers, je voudrais facilement les repérer pour leur ajouter l'extension manquante; bien entendu je peux le faire par petits paquets, mais ça promet d'être un peu long et fastidieux, alors je voulais savoir s'il y a un "truc" qui me permettrait de les localiser en totalité pour les renommer en ajoutant l'extension.
Donc > chercher dans mon dossier "images" et ses sous-dossiers "vacances", "famille", "paysages" etc > photos sans nom d'extension > sélectionner > renommer.
Merci de vos suggestions.
 
Vouais, je m'en doutais, mais quel processus ?
Je ne suis vraiment pas un Automator-man ! J'ai dû y jeter un œil par curiosité quand c'est sorti, ça remonte à quelques années, et jamais utilisé :shy:
 
Bonjour,
Un petit script devrait permettre cela.
Que doit faire le script, une fois les fichiers sans extension trouvés? ajouter l'extension ? si oui laquelle ou déplacer les fichiers ? ou les tagger ?
Tu préfères agir sur l'ensemble du dossier image en une seule fois ? ou relancer le script dossier par dossier ?
 
Merci de m'avoir répondu; le premier problème à résoudre serait dans mes dossiers de photos (pas le logiciel Photo) de repérer celles qui n'ont plus l'extension, surtout .jpg.
Après je me suis souvenu que j'avais une licence de Better Rename, et avec ça ce sera simple, donc le plus important c'est bien de localiser les photos sans extension.
Ce qui est curieux c'est que ces photos sont bien vues par Aperçu mais pas par d'autres programmes photo; si je fais "lire les informations", le format est bien reconnu en tant que jpg même si l'extension manque dans le nom.
 
J'ai bien compris, Mais tu ne répond pas à mes interrogations.
Le script va te demander de choisir le dossier à explorer (y compris ses sous-dossiers), il va trouver les fichiers sans extension, et là que doit-il faire ?
Ajouter l'extension ? si oui laquelle ?
 
Désolé j'étais ailleurs.
Alors si les photos sans extensions sont repérées, y rajouter .jpg serait parfait, mais sinon juste les taguer avec une pastille de couleur, je rajouterais alors le .jpg moi-même via Better Rename.
Mais ne te tracasse pas, je ne verrai ta suite que demain, y'a pas urgence, merci encore.
 
Voila un applescript qui te demande de choisir le dossier puis explore ce dossier et ses sous dossiers, et s'il trouve un fichier sans extension, lui ajoute ".jpg".
Il te prévient lorsqu'il a terminé.

Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer"
    my inspecter(chemin)
end tell

on inspecter(un_dossier)
    tell application "Finder"
        -- traitement des fichiers :
        set les_fichiers to files of un_dossier
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
           
            set nom to name of chaque_fichier --récupère le nom du fichier
            set lextension to name extension of chaque_fichier
           
            if lextension is "" then
               
                set nouveau_nom to nom & ".jpg" --le nouveau nom avec le . et l'extension
               
                set name of chaque_fichier to nouveau_nom --renomme le fichier
               
            end if
        end repeat
       
       
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
  • J’aime
Réactions: subsole
Merci beaucoup :up::), je vais tester ça, je te tiendrai au courant dans la journée
 
Bon, ça a failli.
1er essai, j'arrive à la fenêtre de choix de dossier, j'en choisis un avec des sous-dossiers, progression dans l'exécution, puis stop avec erreur 48 ou -48, élément ou event déjà existant (? j'ai oublié et ne peux le reproduire).
2ème et 3ème essai, exécution commence, puis après une minute environ arrêt, "délai dépassé".
Mais ne te casse pas la tête, je ferai ça manuellement, c'est finalement plus sûr car en ajoutant l'extension .jpg à des documents qui ne seraient pas jpg ça risque de me provoquer d'autres soucis.
 
Bien comme tu veux ! chez moi une dizaine d'essai, pas eu de problème. Mais il est sur que d' ajouter automatiquement un .jpg sans être sur que ce soit la bonne extension risque de provoquer des ennuis.
Par contre je peux te modifier le script pour qu'il te sorte un fichier texte avec le chemin de chaque fichier trouvé sans extension.
Je regarde ça.
 
Voila le script modifié. Il crée un fichier texte sur le bureau nommé sans extension.
Ce fichier contient le chemin de chaque fichier trouvé (un par ligne). Il ne modifie rien.

Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer"
    my inspecter(chemin)
end tell

on inspecter(un_dossier)
    tell application "Finder"
        -- traitement des fichiers :
        set les_fichiers to files of un_dossier
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
           
            set nom to name of chaque_fichier --récupère le nom du fichier
            set lextension to name extension of chaque_fichier
           
            if lextension is "" then
                set sans_extension to chaque_fichier as string
                set lelog to open for access ((path to desktop folder as text) & "Sans extension.txt") as text with write permission
                write sans_extension & return to lelog starting at eof
                close access lelog
            end if
        end repeat
       
       
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Ça n fonctionne pas pour moi, l'exécution du script s'arrête après ± 1mn:
script.webp
 
Bizarre , je ne comprend pas quel délai peut être dépassé...
A tout hasard je vais mettre un délai d'attente pour une réponse du système event. Ca donne

Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer"
    my inspecter(chemin)
end tell

on inspecter(un_dossier)
    with timeout of 1800 seconds
        tell application "Finder"
            -- traitement des fichiers :
            set les_fichiers to files of un_dossier
            repeat with chaque_fichier in les_fichiers
                -- traitement d'un fichier
               
                set nom to name of chaque_fichier --récupère le nom du fichier
                set lextension to name extension of chaque_fichier
               
                if lextension is "" then
                    set sans_extension to chaque_fichier as string
                    set lelog to open for access ((path to desktop folder as text) & "Sans extension.txt") as text with write permission
                    write sans_extension & return to lelog starting at eof
                    close access lelog
                end if
            end repeat
           
           
            -- traitement des dossiers :
            set les_dossiers to folders of un_dossier
            repeat with chaque_dossier in les_dossiers
                -- traitement d'un dossier
                my inspecter(chaque_dossier)
            end repeat
        end tell
    end timeout
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
C'est pareil, même message et rapport délai dépassé (bien avant les 1800 sec) et cette ligne de script surlignée:
choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer"
On dirait qu'il n'ouvre pas le finder dont l'icone sursaute.
 
Tu sélectionnes bien un dossier à explorer et tu valides avec le bouton choisir ?
Je n'arrive pas à reproduire ton problème.
 
Et non, je ne peux pas sélectionner un dossier, le script se met en route mais je n'ai pas d'invite pour choisir, la petite roue "exécution" tourne jusqu'à délai dépassé.
Précisions: je suis sur Mojave, et je copie-colle ton script dans "Editeur de script"; je viens de reprendre ton 1er (avec ajout de l'extension), c'est pareil, je ne comprends pas pourquoi ça avait à moitié fonctionné -j'avais bien eu l'invite choix de dossier du finder- maintenant je n'ai même plus cette possibilité. Editeur 2.11, langage Applesript 2.7.
Et l'erreur qui est signalée est "E rreur dans Finder... number -1712.
 
Quand tu cliques sur la flèche exécuter du script , tu as bien une fenêtre qui s'ouvre intitulée : "Sélectionnez le dossier contenant les fichiers à renommer"
Si tu ne la voie pas ! est-ce que l'icone du finder saute ? et si il saute que se passe t'il si tu cliques dessus?
L'erreur que tu mentionnes dit qu'elle attend que tu choisisses le dossier à explorer !

Edit: éventuellement quittes et redémarre le mac pour être sur qu'il n'y ai pas un processus de bloqué.
 
Parfait après redémarrage, la fenêtre "sélectionnez le dossier..." est revenue et le fichier txt a été fait, et même le Salut !
Alors comme tu as été très efficace, dévoué, serviable et sympa avec moi :merci:, et si tu as le temps, pourrait-on modifier dans ton script qui rajoute l'extension .jpg, au lieu de rajouter l'extension y mettre un tag pastille rouge avant ou après le nom de la photo, ce serait plus "lisible" et commode aussi que les indications des chemins en txt du 2ème script.
Tu peu simplement me dire que remplacer par quoi, j'essaierai de me débrouiller.
En tout cas merci beaucoup :up:
 
Alors il suffit de mettre la ligne : set label index of chaque_fichier to 2
Le chiffre 2 pour un tag rouge: le 6 pour un tag vert
C'est un tag classique du finder, cela te permettra de faire un recherche par tag si besoin.
le script devient:

Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à renommer"
    my inspecter(chemin)
end tell

on inspecter(un_dossier)
    tell application "Finder"
        -- traitement des fichiers :
        set les_fichiers to files of un_dossier
        repeat with chaque_fichier in les_fichiers
            -- traitement d'un fichier
         
            set nom to name of chaque_fichier --récupère le nom du fichier
            set lextension to name extension of chaque_fichier
         
            if lextension is "" then
              
set label index of chaque_fichier to 2
             
            end if
        end repeat
   
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            my inspecter(chaque_dossier)
        end repeat
    end tell
end inspecter
tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell