1 votos

¿Cómo manejar un comando de script de shell en Applescript cuando un nombre de directorio contiene espacios?

Estoy tratando de incorporar un comando exiftool en una rutina de Applescript que realiza manipulaciones complejas de imágenes. La siguiente rutina tiene como objetivo modificar las fechas de creación y modificación de los archivos de imagen movidos a un directorio después de la manipulación.

Me gustaría usar el comando clásico de exiftool:

exiftool "-filemodifydate

``

Sin embargo, el directorio es nombrado por el script con el comando:

set pTargetFoldername to "Edited-pictures" & space & date string of (current date) & space & time of (current date) as string.

Y por lo tanto, el nombre del directorio contiene espacios.

Mi rutina AdjustDates no funciona. El comando resultante no compensa los espacios y no se puede usar en una llamada "do shell script cmd". El comando creado (con las fechas en el idioma francés local) es:

"/usr/local/bin/exiftool -filemodifydate

`

No parezco ver una solución que debería parecer trivial.

on AdjustDates(pTargetFolderPath)
    tell application "Finder"
        set ThePath to (POSIX path of pTargetFolderPath)
    end tell
        set exiftool_path to "/usr/local/bin/exiftool"
        set exiftool_args to "-filemodifydate

` ``

0voto

Max Carl Kirk Puntos 1

He cambiado el comando a :

set exiftool_args to quote & "-filemodifydate" & "<" & "datetimeoriginal" & quote & space & quote & "-filecreatedate" & "<" & "datetimeoriginal" & quote
    set cmd to exiftool_path & space & exiftool_args & space & (quoted form of ThePath)

Este cambio funcionó, además de eliminar los espacios de los nombres de directorio de destino utilizando una rutina que encontré en algún lugar:

set pTargetFoldername to my ReplaceText(pTargetFoldername, " ", "-")

on ReplaceText(t, s, r)
    set tids to AppleScript's text item delimiters
    set AppleScript's text item delimiters to s
    try
        set temp_list to text items of t
        set AppleScript's text item delimiters to r
        set new_text to temp_list as string
        set AppleScript's text item delimiters to tids
    on error err_msg
        set AppleScript's text item delimiters to tids
        error err_msg
    end try
    return new_text
end ReplaceText

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