1 votes

Suppression par lot des métadonnées "Où de" sans gestionnaire

J'ai de nombreuses images qui contiennent les métadonnées "Où de" dans la section "obtenir des informations" qui montre l'URL d'où elles ont été téléchargées. Je veux supprimer cette information de toutes en même temps.

J'ai créé un Applescript qui fonctionne lorsque le script shell récupère une image du dossier sélectionné dans le Finder. Mais lorsque le résultat du script shell est de multiples images, j'obtiens l'erreur suivante :

xattr: Aucun fichier de ce type :

J'ai besoin que l'Applescript fonctionne sans l'utilisation d'un gestionnaire car il sera utilisé dans une application qui n'accepte pas les gestionnaires.

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 votes

Passer plus d'un dossier sélectionné à ce workflow provoquera une erreur à la deuxième ligne. Bien qu'AppleScript soit assez habile pour traiter une liste contenant une seule chaîne et, si nécessaire, savoir quand utiliser la chaîne plutôt que la liste, il n'est pas capable de le faire avec une liste de deux éléments ou plus. Ni chemin POSIX ni forme citée ne sont des propriétés disponibles pour une liste, donc les deux vont se plaindre si vous les faites essayer de traiter autre chose que le cas trivial.

0voto

user3439894 Points 52496

Vous devez ajouter :

& espace

à :

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

Exemple :

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

Une autre manière de résoudre ce problème est de contraindre la liste filePaths à devenir une chaîne de caractères avant d'être utilisée dans la commande do shell script, puisqu'elle est de toute façon contrainte dans le processus.

Donc, juste avant la commande do shell script "xattr ..., faites ce qui suit, au lieu d'utiliser & espace comme mentionné précédemment :

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

0 votes

Wow! Je n'arrive pas à croire que c'était si facile. Après des heures de recherche, tout ce que j'avais à faire était d'ajouter "& espace". Merci beaucoup.

0 votes

@David, Il m'a fallu plus de temps pour rédiger la réponse que pour voir ce qui n'allait pas avec le code. :)

0 votes

C'est ce qui se passe quand vous mélangez un novice avec Applescript. Des erreurs simples comme celle-ci m'arrivent tout le temps. Je n'ai appris que depuis un mois donc je m'améliorerai avec le temps :-)

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