Re: [AS] Un script pour renommer un fichier

Page principale
Supprimer ce message
Répondre à ce message
Auteur: Madert Pascal via Applescript_fr
Date:  
À: La liste AppleScript Francophone
CC: Madert Pascal
Sujet: Re: [AS] Un script pour renommer un fichier
Oui, c'est bien cela, les fichiers sont générés chaque jours donc les dates ne seront jamais, enfin j'espère…:-)) avant 2021…

Autre petit soucis, certains fichiers auront la même date à l'intérieur du fichiers excel.
Donc lors du changement de nom, il ne se passe rien avec le (do Shell script 'mv -n")
J'essaie de vérifier si le fichiers existe, mais ça ne fonctionne pas.
J'ai essayé avec (if not exists… then…) ou avec un (do Shell script "ls "), ou (if [ -e monfichier ] then) c'est idem, ça ne fait rien, même s'il n'existe pas.
Et le dernier essai avec une fonction.
Mais j'aurais le soucis que s'il y en a plusieurs, l'incrémentation devra se faire sur 1;2;3…

on open fileName -- vérification de la nature du paramètre
    if class of fileName is list then set fileName to first item of fileName
    set filePath to fileName as text -- retourne le chemin d'accès Hfs
    tell application "Finder"
        set theFileName to name of fileName
        set theFilePath to fileName as string
        set lextension to name extension of fileName
        set nomcourt to text 1 thru ((length of theFileName) - (1 + (length of lextension))) of theFileName
        set folderPath to folder of fileName as alias
        set folderName to name of folderPath
    end tell
    tell application "Microsoft Excel"
        activate
        open fileName
        select cell "H2"
        set theDate to value of active cell as date -- retourne une date Applescript conforme aux réglages système
        set theYear to year of theDate as string -- je suppose que l'année est sur quatre chiffres
        if theYear < 100 then set theYear to theYear + 2000 -- suppose que la date relève du XXIème siècle
        set theYear to theYear as string
        set theMonth to text 2 thru 3 of ((100 + (month of theDate as number)) as string) -- on aura toujours deux chiffres
        set theDay to text 2 thru 3 of ((100 + (day of theDate)) as string) -- on aura toujours deux chiffres
        set NouveauTexte to theYear & "-" & theMonth & "-" & theDay -- crée une chaîne, inutile de forcer cette nature
        set NewFileName to folderName & "-" & NouveauTexte & "." & lextension
        set L to length of theFilePath
        set R to 0 as integer
        repeat with i from 1 to L
            if character i of theFilePath = ":" then
                if R < i then
                    set R to i
                end if
            end if
        end repeat
        set R to R - 1
        set chemin to text from character 1 to R of theFilePath
        set chemin2 to chemin & ":" & NewFileName
        set p2f to chemin2
        if (testPresence(p2f)) then
            set result to "Présent" -- traitement si fichier présent
            set NewFileName to folderName & "-" & NouveauTexte & "-1" & "." & lextension
            set value of cell "B7" to chemin2 --pour test            
        else
            set result to "Absent" -- traitement si fichier absent
            do shell script "mv -n " & quoted form of POSIX path of theFilePath & space & quoted form of POSIX path of chemin2
        end if
        do shell script "mv -n " & quoted form of POSIX path of theFilePath & space & quoted form of POSIX path of chemin2
    end tell
end open



on testPresence(p2f)
    try
        do shell script "ls " & quoted form of POSIX path of theFilePath & space & quoted form of POSIX path of chemin2
        return true
    on error
        return false
    end try
end testPresence


Bonne après-midi
Pascal


> Le 07 mai 2021 à 12:43, Yvan KOENIG via Applescript_fr <applescript_fr@???> a écrit :
>
>
>
>> Le 7 mai 2021 à 09:00, Madert Pascal via Applescript_fr <applescript_fr@???> a écrit :
>>
>> Ah oui. Mille excuses, dans la suite du script, j'avais laissé "nomcourt"…
>> Ça fonctionne.
>>
>> Merci Yvan, mais là, j'avoue mon ignorance sur la manipulation des dates.
>> Encore que ce ne sera que des fichiers français. Mais mieux vaut prévoir si l'un de mes partenaires se fait racheter par un américain…
>> Il y a des dates sur 2 chiffres et des dates sur 4 chiffres. Les delimiters me permettait de m'affranchir de ça.
>> La ligne "set theYear to year of theDate as string -- je suppose que l'année est sur quatre chiffres" doit-elle être modifié si l'année est sur 2 chiffres ?
>>
>> Belle journée à vous.
>> Pascal
>>
>
>
> Pas de problème.
>
> méthode simpliste pour convertir une année en chaîne de 4 caractères:
>
> set theYear to year of theDate
> if theYear < 100 then set theYear to theYear + 2000 -- suppose que la date relève du XXIème siècle
> set theYear to theYear as string
>
>
> Je ne vois pas comment le script pourrait déterminer à coup sur que la date relève du XXème siècle ou du XXIème si bien que le code ci-dessus n'est pas parfait.
> C'est pourquoi, à titre personnel je ne stocke jamais une année sur deux chiffre. Et c'est pourquoi je m'étais abstenu de proposer un code.
>
> Yvan KOENIG (VALLAURIS, France) vendredi 7 mai 2021 12:42:02
>
>
> _______________________________________________
> Applescript_fr mailing list
> Applescript_fr@???
> http://listes.patpro.net/mailman/listinfo/applescript_fr


_______________________________________________
Applescript_fr mailing list
Applescript_fr@???
http://listes.patpro.net/mailman/listinfo/applescript_fr