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