Renommer PDF avec information contenu fichier

Ok ! donc c'est bien çà...
;)

Reste plus qu'a modifier le script d'origine pour rechercher tous les "Contrat n° : " récupérer les sept caractères qui suivent et les ajouter au nom de ton fichier.
Je m'y colle !
 
Super! :up:
Il sera capable de récupérer plusieurs numéros "Contrat n° : "? Comme j'te le disais hier, je me suis rendu compte qu'il y en avait parfois 3, différents, et qu'il faudrait qu'ils s'ajoutent au titre genre "Titre-1234567-1234567-1234567.pdf"
 
Fait un test avec ce script !
Par prudence choisi un dossier avec quelques copies de tes fichiers PDF
N'oublie pas d"effacer le dossier Temp de ton bureau !

Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le  dossier contenant les fichiers à renommer"
  
    set tous to every file of entire contents of chemin
    set nb to count tous
  
    repeat with i from 1 to nb
        make new folder at desktop with properties {name:"Temp"}
        set ledossiertemp to ((path to desktop folder as text) & "Temp:") as alias
        set lefichiertexte to ((path to desktop folder as text) & "Temp:Letexte.txt")
        set lepdf to item i of tous
      
        set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
        set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
        set elements to text items of (name of lepdf as string) --nom --ou of (name of a as string)
        set nomcourt to (items 1 thru -2 of elements) as string
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
      
        duplicate lepdf to ledossiertemp
      
        tell application "PDFenTEXTE"
            launch
            activate
        end tell
      
        delay 2
        set sauv to AppleScript's text item delimiters
        set lefich to lefichiertexte
        set lefichierUnix to quoted form of POSIX path of lefichiertexte
        do shell script "textutil -convert txt -encoding UTF-8 " & lefichierUnix
        set letexte to read file lefich
        set ajout to ""
        set AppleScript's text item delimiters to "Contrat n° : "
        set nb to count text item of letexte
        repeat with i from 2 to nb
            set suite to text item i of letexte
            set lessept to text 1 thru 7 of suite as text
            set ajout to ajout & "-" & lessept
        end repeat
        set AppleScript's text item delimiters to sauv
   
        set name of lepdf to nomcourt & ajout & ".pdf"
      
        do shell script "rm -r " & POSIX path of ledossiertemp
      
    end repeat
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Ca a l'air de fonctionner puisqu'il me met bien le message "waouou ... Ca y est c'est fait !", je vois un dossier Temp apparaître et disparaitre lors de l'exécution. Le problème c'est qu'il disparait totalement à la fin, et il n'est pas dans la Corbeille non plus.

Edit: Ah !! Maintenant j'ai une erreur: error "Erreur dans Finder : Impossible de convertir file \"Desktop:Temp:Letexte.txt\" en type file." number -1700 from file "Desktop:Temp:Letexte.txt" to file. Et dans le dossier Temp je n'ai qu'une copie du PDF, sans le fichier texte...
 
Dernière édition:
Mais c'est normal, le dossier temp est comme son nom l'indique , temporaire et il se crée et s'efface pour chaque fichier PDF puis s'efface définitivement lorsque c'est fini.
Et dans ton dossier choisi au départ, contenant les PDF, ceux là doivent avoir le nouveau nom ?
 
Non, les fichiers n’étaient pas renommés… et j’avais des fichiers Letexte.txt, Letexte-1.txt, Letexte-2.txt… sur le bureau.
 
????
Alors là ! nouvelle énigme, je repart en exploration...

Pour être sur du déroulement de tes actions
-Tu as un dossier avec à l'intérieur quelques fichiers .pdf qui contiennent bien les mots "contrat n° : ".
-Tu n'a pas de dossier "Temp" sur le bureau.
-Tu lances le script, il te demande de choisir le dossier contenant les .PDF à renommer

tu Vois un dossier "Temp" se créer sur le bureau , puis disparaître, puis se recréer etc... autant de fois qu'il y a de fichiers .PDF
A la fin , plus de trace du dossier "Temp" et un message disant qu'il a terminé
Tu valides ce message
Et là tu dois avoir dans ton dossier les PDF avec le nouveau nom

Est-ce que cela se déroule bien comme çà ?
Sinon quelle différence vois tu ?
 
C’est bien comme ça que ça s’est passé, sauf que les fichiers ne sont pas renommés. Je pense à l’appli Automator: ça reste les mêmes réglages qu’au départ?!
 
Non ! rien a voir avec automator

Le problème c'est que si les PDF sont encodé en UTF-8 et que je les réencode cela met le souk !
essai avec ce script

J'ai ajouté un affichage du nombre d'occurences trouvée lors de la rechercher de "Contrat n° : " et cela à chaque fichier traité. Il te faudra valider à chaque fois
Cela te permettra de voir s'il trouve bien les mots.
On avisera suivant le résultat.

Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le  dossier contenant les fichiers à renommer"
    
    set tous to every file of entire contents of chemin
    set nb to count tous
    
    repeat with i from 1 to nb
        make new folder at desktop with properties {name:"Temp"}
        set ledossiertemp to ((path to desktop folder as text) & "Temp:") as alias
        set lefichiertexte to ((path to desktop folder as text) & "Temp:Letexte.txt")
        set lepdf to item i of tous
        
        set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
        set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
        set elements to text items of (name of lepdf as string) --nom --ou of (name of a as string)
        set nomcourt to (items 1 thru -2 of elements) as string
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
        
        duplicate lepdf to ledossiertemp
        
        tell application "PDFenTEXTE"
            launch
            activate
        end tell
        
        delay 2
        set sauv to AppleScript's text item delimiters
        set lefich to lefichiertexte
        set lefichierUnix to quoted form of POSIX path of lefichiertexte
        do shell script "textutil -convert txt -encoding UTF-8 " & lefichierUnix
        
        set lefich to lefichiertexte as alias
        set letexte to read file lefich
        
        set ajout to ""
        set AppleScript's text item delimiters to "Contrat n° : "
        set nb to count text item of letexte
        
        display dialog (nb - 1)
        
        repeat with i from 2 to nb
            set suite to text item i of letexte
            set lessept to text 1 thru 7 of suite as text
            set ajout to ajout & "-" & lessept
        end repeat
        set AppleScript's text item delimiters to sauv
        
        set name of lepdf to nomcourt & ajout & ".pdf"
        
        do shell script "rm -r " & POSIX path of ledossiertemp
        
    end repeat
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
C'était un problème avec Automator pour les fichiers Letexte.txt sur le bureau. Il m'avait remis "Desktop" au lieu de "Temp". Ça: c'est bon.
Par contre, ton dernier script me précise "0", à chaque fois. Et les fichiers ne sont pas renommés.

Edit: C'est le "°" qui pose problème, en l'enlevant ça me donne 3 occurrences par fichier. Mais ça me renomme les fichiers n'importe comment o_O
 
Je viens de refaire un script avec un test supplémentaire
Essai.
Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le  dossier contenant les fichiers à renommer"
   
    set tous to every file of entire contents of chemin
    set nb to count tous
   
    repeat with i from 1 to nb
        make new folder at desktop with properties {name:"Temp"}
        set ledossiertemp to ((path to desktop folder as text) & "Temp:") as alias
        set lefichiertexte to ((path to desktop folder as text) & "Temp:Letexte.txt")
        set lepdf to item i of tous
       
        set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
        set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
        set elements to text items of (name of lepdf as string) --nom --ou of (name of a as string)
        set nomcourt to (items 1 thru -2 of elements) as string
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
       
        duplicate lepdf to ledossiertemp
       
        tell application "PDFenTEXTE"
            launch
            activate
        end tell
       
        delay 2
        set sauv to AppleScript's text item delimiters
        set lefich to lefichiertexte
        set ajout to ""
        set AppleScript's text item delimiters to "Contrat n° : "
        -- essai pour voir si trouve format UTF-8
        set lefich to lefichiertexte as alias
        set letexte to read file lefich
        set nb to count text item of letexte
       
        if nb = 1 then
           
            set lefichierUnix to quoted form of POSIX path of lefichiertexte
            do shell script "textutil -convert txt -encoding UTF-8 " & lefichierUnix
           
            set lefich to lefichiertexte as alias
            set letexte to read file lefich
            set AppleScript's text item delimiters to "Contrat n° : "
            set nb to count text item of letexte
        end if
       
        repeat with i from 2 to nb
            set suite to text item i of letexte
            set lessept to text 1 thru 7 of suite as text
            set ajout to ajout & "-" & lessept
        end repeat
        set AppleScript's text item delimiters to sauv
       
        set name of lepdf to nomcourt & ajout & ".pdf"
       
        do shell script "rm -r " & POSIX path of ledossiertemp
       
    end repeat
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Si cela ne fonctionne pas tu peux toujours essayer en ne cherchant que "Contrat n" avec le script ci-dessous
Pour supprimer la recherche sur le "°"

Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le  dossier contenant les fichiers à renommer"
   
    set tous to every file of entire contents of chemin
    set nb to count tous
   
    repeat with i from 1 to nb
        make new folder at desktop with properties {name:"Temp"}
        set ledossiertemp to ((path to desktop folder as text) & "Temp:") as alias
        set lefichiertexte to ((path to desktop folder as text) & "Temp:Letexte.txt")
        set lepdf to item i of tous
       
        set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
        set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
        set elements to text items of (name of lepdf as string) --nom --ou of (name of a as string)
        set nomcourt to (items 1 thru -2 of elements) as string
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
       
        duplicate lepdf to ledossiertemp
       
        tell application "PDFenTEXTE"
            launch
            activate
        end tell
       
        delay 2
        display dialog "stop"
        set sauv to AppleScript's text item delimiters
        set lefich to lefichiertexte
        set ajout to ""
        set AppleScript's text item delimiters to "Contrat n"
        -- essai pour voir si trouve format UTF-8
        set lefich to lefichiertexte as alias
        set letexte to read file lefich
        set nb to count text item of letexte
       
        if nb = 1 then
           
            set lefichierUnix to quoted form of POSIX path of lefichiertexte
            do shell script "textutil -convert txt -encoding UTF-8 " & lefichierUnix
           
            set lefich to lefichiertexte as alias
            set letexte to read file lefich
            set AppleScript's text item delimiters to "Contrat n"
            set nb to count text item of letexte
        end if
       
        repeat with i from 2 to nb
            set suite to text item i of letexte
            set lessept to text 5 thru 11 of suite as text
            set ajout to ajout & "-" & lessept
        end repeat
        set AppleScript's text item delimiters to sauv
       
        set name of lepdf to nomcourt & ajout & ".pdf"
       
        do shell script "rm -r " & POSIX path of ledossiertemp
       
    end repeat
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
 
Pour le 1er script: tout se déroule bien, pas d'erreur, "waouou ... Ca y est c'est fait !" mais les fichiers ne sont pas renommés...
Pour le 2ème: C'est bon, mais il manque un chiffre (le dernier) à chaque numéro de contrat. Sinon, même s'il y en a plusieurs il les ajoute bien :up:
 
bonjour,
C'est bon, mais il manque un chiffre (le dernier) à chaque numéro de contrat.
Curieux, bref pas grave !
change la ligne:
Bloc de code:
set lessept to text 5 thru 11 of suite as text
Qui prend les caractères (du 5ième au 11ième après ("Contrart n") par
Bloc de code:
set lessept to text 5 thru 12 of suite as text
Qui en récupère 1 de plus !

Vérifie si c'est bien les 7 chiffres des numéros du contrat, sans espace avant !

Dis moi si c'est bon !
 
Dur ! dur ! de travailler en aveugle,
Ma boule de cristal m'a bien été utile :D

Si tout fonctionne ! Content pour toi ;)
 
En vérifiant, il restait un point d'arrêt que j'avais mis pour mes essais
Le script définitif est donc:


Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le  dossier contenant les fichiers à renommer"
    
    set tous to every file of entire contents of chemin
    set nb to count tous
    
    repeat with i from 1 to nb
        make new folder at desktop with properties {name:"Temp"}
        set ledossiertemp to ((path to desktop folder as text) & "Temp:") as alias
        set lefichiertexte to ((path to desktop folder as text) & "Temp:Letexte.txt")
        set lepdf to item i of tous
        
        set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
        set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
        set elements to text items of (name of lepdf as string) --nom --ou of (name of a as string)
        set nomcourt to (items 1 thru -2 of elements) as string
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
        
        duplicate lepdf to ledossiertemp
        
        tell application "PDFenTEXTE"
            launch
            activate
        end tell
        
        delay 2
        
        set sauv to AppleScript's text item delimiters
        set lefich to lefichiertexte
        set ajout to ""
        set AppleScript's text item delimiters to "Contrat n"
        
        -- essai pour voir si trouve le mot (format UTF-8)
        
        set lefich to lefichiertexte as alias
        set letexte to read file lefich
        set nb to count text item of letexte
        
        --si pas trouvé peut être utf 16 alors convert et re-essai ( attention certain caractères pas reconnu "°")
        
        if nb = 1 then
            set lefichierUnix to quoted form of POSIX path of lefichiertexte
            do shell script "textutil -convert txt -encoding UTF-8 " & lefichierUnix
            
            set lefich to lefichiertexte as alias
            set letexte to read file lefich
            set AppleScript's text item delimiters to "Contrat n"
            set nb to count text item of letexte
        end if
        
        repeat with i from 2 to nb
            set suite to text item i of letexte
            set lessept to text 5 thru 12 of suite as text
            set ajout to ajout & "-" & lessept
        end repeat
        set AppleScript's text item delimiters to sauv
        
        set name of lepdf to nomcourt & ajout & ".pdf"
        
        do shell script "rm -r " & POSIX path of ledossiertemp
        
    end repeat
end tell
tell application "Finder"
    activate
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell