1 votos

Eliminación por lotes de los metadatos "Where from" sin un gestor

Tengo muchas imágenes que contienen los metadatos "Where from" en la sección "get info" que muestra la URL de donde fueron descargadas. Quiero eliminar esta información de todas ellas al mismo tiempo.

He creado un Applescript que funciona cuando el shell script recupera una imagen de la carpeta seleccionada en el finder. Pero cuando el resultado del shell script es de varias imágenes, me da el siguiente error:

xattr: No hay tal archivo:

Necesito que el Applescript funcione sin el uso de un manejador ya que será utilizado en una aplicación que no acepta manejadores.

tell application "Finder" to set selectedFolder to selection as alias list
set folderPath to quoted form of POSIX path of selectedFolder

set getImages to "mdfind -onlyin " & folderPath & " 'kMDItemKind = *image'"
set selectedImages to paragraphs of (do shell script getImages)

set filePaths to {}
repeat with thisFile in selectedImages
    set end of filePaths to quoted form of POSIX path of thisFile
end repeat

do shell script "xattr -d com.apple.metadata:kMDItemWhereFroms " & filePaths

0 votos

Si se pasa más de una carpeta seleccionada a este flujo de trabajo, se producirá un error en la segunda línea. Mientras que AppleScript es razonablemente hábil para tratar con un list que contenga una sola cadena y, cuando sea necesario, saber cuándo utilizar el string en lugar de la list Pero no es capaz de hacer esto con cualquier lista de dos o más elementos. Tampoco POSIX path ni quoted form son propiedades disponibles para un list por lo que ambos se van a quejar si les haces tratar cualquier cosa que no sea el caso trivial.

0voto

user3439894 Puntos 5883

Tienes que añadir:

& space

Para:

set end of filePaths to quoted form of POSIX path of thisFile

Ejemplo:

set end of filePaths to quoted form of POSIX path of thisFile & space

Otra forma de resolver esta cuestión es coaccionar al lista filePaths a un cadena antes de que se utilice en el do shell script comando ya que, al fin y al cabo, se coacciona en el proceso.

Así que, justo antes de la do shell script "xattr ... comando En lugar de utilizar & space como se mencionó anteriormente:

set text item delimiters to space
set filePaths to filePaths as string
set text item delimiters to ""

0 votos

¡Wow! No puedo creer que haya sido tan fácil. Después de horas de búsqueda todo lo que tenía que hacer era añadir "& espacio". Muchas gracias.

0 votos

@David, me llevó más tiempo escribir la respuesta que ver lo que estaba mal en el código . :)

0 votos

Eso es lo que pasa cuando mezclas a un novato con Applescript. Errores simples como este me pasan todo el tiempo. Sólo tengo un mes aprendiendo, así que mejoraré con el tiempo :-)

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