3 votos

AppleScript básicos de formato de fecha/hora y el nombre de archivo

Estoy tratando de envolver mi cabeza alrededor de AppleScript. Tengo un proyecto sencillo, capturas de pantalla cada varios segundos y guardarlos en una carpeta.

He encontrado útil esta secuencia de comandos en GitHub:

He alterado un poco en un intento de cambiar el nombre del archivo en este formato:

screen_shot 2019-04-05 at 5.23.13 PM.jpg

Sin embargo, termino con un nombre de archivo como este:

screen_shot0Thursday

Yo podría utilizar un poco de ayuda a ordenar cómo usar correctamente las funciones de fecha y hora dentro de la secuencia de comandos.

Aquí está la secuencia de comandos:

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

James Socol Puntos 146

Si usted realmente quiere hacer todo en AppleScript, entonces usted debe tratar de:

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"

Nota: Con respecto a AM/PM: no he probado esto en la noche, pero debería funcionar

Sería el camino más fácil, sin embargo el uso de do shell script de esta, por ejemplo:

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

o incluso en un solo paso mediante el uso de:

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

Asegúrese de reemplazar username con tu nombre de usuario, y también de que la carpeta screencapture existe. En resumen, esto se traduce en:

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

Nota de la importancia de envolver correctamente el nombre de archivo entre comillas, que luego debe ser escapado dentro de AppleScript por un líder de la barra diagonal inversa: \"

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X