6 votes

Supprimer automatiquement les fichiers du dossier Téléchargements quotidiennement sauf s'ils sont étiquetés avec "Garder"?

Comment puis-je automatiser la suppression de fichiers de mon dossier de téléchargements tout en conservant les fichiers que j'ai tagués avec "Keep" ? J'ai pu utiliser Automator pour supprimer des fichiers quotidiennement, mais je ne peux pas travailler avec les tags dans Automator. Il est très probable que cela nécessite AppleScript (je suis assez nouveau dans l'utilisation d'AppleScript). J'ai créé un script AppleScript pour supprimer des fichiers du dossier de téléchargements, mais cela ne fonctionne pas (je ne peux pas dire s'il s'agit d'un problème de permissions), et je suis perdu sur le fonctionnement des tags/étiquettes de fichier dans AppleScript.

try
    tell application "Finder"
        delete (every item of folder "/Users/wheel58m/Library/Mobile Documents/com~apple~CloudDocs/Downloads")
    end tell

on error
    display dialog ("Erreur. Impossible de déplacer le fichier") buttons {"OK"}
end try

Toute documentation ou ressource est appréciée.

3voto

user3439894 Points 52496

Supprimer automatiquement les fichiers du dossier Téléchargements chaque jour sauf s'ils sont tagués avec "Keep" ?

L'exemple suivant de AppleScript code peut être utilisé dans un script shell avec un /usr/bin/osascript shebang, ou dans une application AppleScript, ou dans une action Run AppleScript dans un workflow Automator pour supprimer tout fichier du dossierCible qui n'a pas un "Keep" tag personnalisé défini dans Finder:

-- # dossierCible peut être un chemin HFS ou un chemin POSIX,
-- # "chemin:vers:dossier:cible:" ou "/chemin/vers/dossier/cible"
-- # 
-- # Changer la valeur de dossierCible de "/chemin/vers/dossier/cible"
-- # par le chemin d'accès approprié en forme entièrement qualifiée dans l'une ou l'autre forme.

set dossierCible to "/chemin/vers/dossier/cible"

-- # Le reste du code ne devrait pas avoir besoin d'être modifié, 
-- # sauf si la requête mdfind doit être modifiée.

set cheminPOSIXdossierCible to ¬
    le texteponctué de ¬
        le chemin POSIX de dossierCible

set commandeShell to {¬
    "mdfind -onlyin", espace, cheminPOSIXdossierCible, espace, ¬
    "'! kMDItemKind == Dossier && ! kMDItemUserTags == Keep'"} ¬
    en tant que chaîne

set fichiersPOSIXASupprimer to ¬
    paragraphes de ¬
    (faire la commande shell commandeShell)

set fichiersASupprimer to {}
répéter avec cetteFichier dans fichiersPOSIXASupprimer
    définir cetteFichier comme fichier POSIX cetteFichier comme alias
    ajouter thisFile à la fin de fichiersASupprimer
fin répéter

si fichiersASupprimer n'est pas {} alors ¬
    dire à l'application "Finder" de ¬
        supprimer fichiersASupprimer 

Remarque : Défilez au besoin pour voir le reste du code.


Notes :

  • Comme je n'ai pas le dossier cible mentionné dans la question, je n'ai pas pu tester d'éventuels problèmes d'autorisations à résoudre dans : Préférences Système > Sécurité et confidentialité > Confidentialité
  • L'exemple de AppleScript code a été testé et a fonctionné pour moi sans problème sur macOS Catalina en utilisant un dossier temporaire créé dans mon dossier Home en y ajoutant des fichiers et des dossiers et en taguant uniquement certains fichiers avec un tag personnalisé "Keep" dans Finder.
  • Concernant la "Suppression automatique des fichiers", il existe plusieurs façons de le faire en fonction de la manière dont le exemple de AppleScript code est utilisé. Utilisé comme application de AppleScript avec : Calendrier
  • Utilisé comme script shell de AppleScript avec : launchd ou cron

Remarque : L'<em>exemple</em> de <strong>AppleScript</strong> <em>code</em> est tel quel et sans aucun <em>gestion des erreurs</em> inclus ne contient aucune <em>gestion des erreurs</em> supplémentaire qui pourraient être appropriées. Il appartient à l'utilisateur d'ajouter toute <em>gestion des erreurs</em> qui pourrait être appropriée, nécessaire ou souhaitée. Consultez le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>try</strong></a> <em>statement</em> et <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>error</strong></a> <em>statement</em> dans le <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guide du Langage AppleScript</strong></a>. Voir aussi, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Travailler avec les erreurs</strong></a>. De plus, l'utilisation de la commande <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>delay</strong></a> peut être nécessaire entre les événements lorsque cela est approprié, par exemple <code>delay 0.5</code>, la <em>valeur</em> du <em>délai</em> étant définie de manière appropriée.

0voto

Wowfunhappy Points 6021

D'après ce que je peux voir, les balises sont toujours appelées "étiquettes" en Applescript. Finder renverra un "index d'étiquette" différent en fonction de l'étiquette d'un fichier.

tell application "Finder" to get label index of file "chemin:vers:fichier"

Lorsqu'un fichier n'a pas d'étiquettes, cela renvoie "0". Lorsqu'un fichier a une étiquette "rouge", cela renvoie 2, et lorsqu'il a une étiquette "jaune", cela renvoie 3. Lorsqu'un fichier a une étiquette "rouge" et une étiquette "jaune", cela... renvoie toujours 3.

Tout cela semble un peu étrange/fragile, mais si vous ne trouvez pas de meilleure façon de le faire (!), je ferais quelques expérimentations pour trouver l'"index d'étiquette" de votre balise keep, puis vérifier cela dans votre code.

0voto

HeckFinlay Points 721

Le AppleScript suivant est une version fonctionnelle du code que vous avez posté, si vous remplacez et par les noms de votre disque système et votre nom d'utilisateur, respectivement.

try
    tell application "Finder"
        delete (every item of folder ":Users::Library:Mobile Documents:com~apple~CloudDocs:Downloads")
    end tell

on error
    display dialog ("Erreur. Impossible de déplacer le fichier") buttons {"OK"}
end try

Voir la documentation d'Apple sur le travail avec les fichiers et dossiers en AppleScript.

Je n'ai pas trouvé de mention de balises dans la bibliothèque Finder de AppleScript mais Howard Oakley déclare qu'ils peuvent être ajoutés avec AppleScript, donc ils devraient être accessibles, peut-être comme des étiquettes comme le suggère @Wowfunhappy. Vous pourriez avoir besoin d'installer et d'apprendre à utiliser tag, comme mentionné dans le même article.

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