2 votos

Ruta de la carpeta temporal para Apple script

set targetFile to (path to temporary items as string) & fileName

Estoy intentando descargar una imagen web a la carpeta temporal mediante curl en un Apple script.

Según el código anterior, el curl lo descarga como correcto pero el targetFile está actualmente como:

Macintosh HD:private:var:folders:...TemporaryItems:image.png

Pero después de la descarga, necesito la ruta de la imagen descargada como una ruta de archivo correcta como:

/tmp/image.png

¿Cómo puedo establecer targetFile como una cadena que contenga una barra inclinada en la ruta del archivo? ¿O cómo puedo obtener la ruta del archivo de la imagen después de que sea descargada por curl?

2voto

Ted Wrigley Puntos 101

Prueba este código:

set targetFile to quoted form of ((POSIX path of (path to temporary items)) & filename)

Esto le dará una ruta POSIX adecuada a la carpeta temporal estándar. En mi máquina, por ejemplo, esto me dio:

'/private/var/folders/rl/zwlvv_hd6ss4c4yhb6nxxfz80000gn/T/TemporaryItems/<somefilename>'

He utilizado el quoted form of en caso de que el nombre de archivo utilizado contenga un espacio u otro carácter especial del shell.

También puedes utilizar System Events.app, de esta manera:

tell application "System Events"
    set targetfolder to quoted form of (get POSIX path of file filename of temporary items folder)
end tell

0voto

TheBro21 Puntos 1319

Se puede evitar esto con algo como

set a to "/tmp/" & fileName
set targetFile to POSIX path of a
--since you are using curl
do shell script "curl http://example.com/images.jpg > " & targetFile

Este AppleScript hará una cadena que contenga /tmp/ y targetFile lo configura para que se interprete como POSIX (utilizado por shell y curl). Luego descarga imágenes.jpeg y lo almacena como fileName

0voto

Fred Puntos 1

¡Creo que la respuesta de Ted Wingly es menos probable que arroje errores que la respuesta aceptada ! Siempre es una buena idea usar "la forma citada de" en una ruta, en caso de que los nombres tengan espacios. La versión de System Events arrojaría un error al ser escrita, si el nombre del archivo no existe. para evitar el error, necesitarías escribirlo así :

indique a la aplicación "Eventos del sistema" que establezca la carpeta de destino en forma de cita (obtenga la ruta POSIX de la carpeta de elementos temporales y el nombre del archivo)

-1voto

Ramesh Kumar Puntos 126

Otras respuestas son buenas, pero no abordan los problemas de seguridad. Otros usuarios de la máquina pueden ver los archivos en /tmp . Combinando la pregunta y la respuesta aceptada se obtiene (en mi opinión) una respuesta mejor:

set fileName to "output.txt"
set targetFile to (path to temporary items as string) & fileName
log POSIX path of targetFile

Esto da como resultado /private/var/folders/m1/ldn6fy6n38d52b1fmztr99br0000gp/T/TemporaryItems/output.txt

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