3 votes

Format de base date/heure et nom de fichier AppleScript

J'essaie de me faire une idée de l'AppleScript. J'ai un projet simple qui consiste à capturer des captures d'écran toutes les quelques secondes et à les enregistrer dans un dossier.

J'ai trouvé ce script utile sur GitHub :

Je l'ai un peu modifié pour essayer de changer le nom du fichier à ce format :

screen_shot 2019-04-05 at 5.23.13 PM.jpg

Pourtant, je me retrouve avec un nom de fichier comme celui-ci :

screen_shot0Thursday

J'aurais besoin d'aide pour savoir comment utiliser correctement les fonctions de date et d'heure dans le script.

Voici le script :

set dFolder to "~/Desktop/screencapture/"
set theDate to current date

do shell script ("mkdir -p " & dFolder)

set i to 0
repeat 960 times
    do shell script ("screencapture " & dFolder & "screenshot_" & i & theDate & ".jpg")
    delay 5 -- Wait for 5 seconds.
    set i to i + 1
end repeat

2voto

Asmus Points 7195

Si vous vraiment vous voulez tout faire en AppleScript, alors vous devriez essayer :

to date_format(old_date) -- Old_date is text, not a date.
    set {year:y, month:m, day:d} to date old_date
    tell (y * 10000 + m * 100 + d) as string to text 1 thru 4 & "-" & text 5 thru 6 & "-" & text 7 thru 8
end date_format

to time_format(old_time)
    set {hours:h, minutes:m, seconds:s} to date old_time
    set pre to "AM"
    if (h > 12) then
        set h to (h - 12)
        set pre to "PM"
    end if
    return (h & "." & m & "." & s & " " & pre) as string
end time_format

set theDate to (current date)
set dateFormatted to date_format(date string of (theDate))
set timeFormatted to time_format(time string of (theDate))
set filename to  "screen_shot " & dateFormatted & " at " & timeFormatted & ".jpg"

Note : En ce qui concerne AM/PM : Je n'ai pas essayé le soir, mais cela devrait fonctionner.

Ce serait beaucoup plus facile Toutefois, pour utiliser do shell script pour cela, par exemple :

set formattedDate to (do shell script "date +'%Y-%m-%d at %H.%M.%S %p'")
set filename to "screen_shot " & formattedDate & ".jpg"

ou même en une seule étape en utilisant :

do shell script "screencapture \"/Users/yourusername/Desktop/screencapture/screen_shot $(date +'%Y-%m-%d at %H.%M.%S %p').jpg\" "

Veillez à remplacer username avec votre nom d'utilisateur réel, et aussi que le dossier screencapture existe. En résumé, cela se traduit par :

set i to 0
repeat 960 times
    do shell script "screencapture \"/Users/yourusername/Desktop/screencapture/screen_shot $(date +'%Y-%m-%d at %H.%M.%S %p').jpg\" "
    delay 5 -- Wait for 5 seconds.
    set i to i + 1
end repeat

Notez qu'il est important de placer correctement le nom du fichier entre guillemets doubles, qui doit ensuite être échappé dans AppleScript par une barre oblique inverse : \"

0 votes

Merci, Asmus ! Pourrais-je ajouter du code supplémentaire pour gérer la capture automatique/répétitive des captures d'écran ?

0 votes

@Nicholas Je ne suis pas sûr de ce que vous voulez : vous avez déjà inclus un repeat 960 times Avec un délai de 5 secondes dans votre question, y a-t-il quelque chose de spécifique que vous visez ?

0 votes

Je ne sais pas comment inclure votre suggestion de do shell script "screencapture \"~/Desktop/screencapture/screen_shot $(date +'%Y-%m-%d at %H.%M.%S %p').jpg\" " avec mon script actuel.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X