2017-06-18 2 views
0

j'ai un script simple à prendre des objets sur la poubelle et les remettre dans leur répertoire d'origine:dialogues de manipulation AppleScript lors de la mise des fichiers de retour Trash

repeat 10 times 
    tell application "Finder" to open trash 
    tell application "Finder" to activate 
    tell application "System Events" 
     tell process "Finder" 
      delay 0.2 
      key code 125 
      key down command 
      delay 0.2 
      key code 51   
      key up command  
     end tell 
    end tell 
    delay 0.2 
    tell application "Finder" to close every window 
end repeat 

Mais l'exécution de ce script vomit une exception - un chercheur un dialogue apparaît indiquant que le fichier existe déjà dans l'emplacement d'origine, avec 3 options: 'Keep both', 'stop' et 'replace'. Je voudrais que le script sélectionne automatiquement "remplacer".

Des idées?

Répondre

0

vous devez faire face à plusieurs problèmes:

Le dernier emplacement du fichier est stocké à l'intérieur .DS_Store poubelle. Pour certains fichiers (si le dossier original est supprimé), le chemin n'existe pas dans ce fichier et l'option de retour ne fonctionnera pas (donc votre script ne le fera pas) - vous le verrez grisé dans le menu contextuel si vous l'essayez manuellement. Ensuite, les méthodes gui de la touche ne renverront rien - vous ne pouvez donc pas contrôler d'autres étapes telles que l'écrasement des fichiers. La meilleure approche consiste à lire les emplacements d'origine, puis créer des commandes de déplacement avec des options d'écrasement.

Sur une autre personne de fil a écrit un script de perles à faire: https://superuser.com/a/867988

Exécutez le script comme

set ps to "posixpath/to/script.pl" 
set moveCommands to do shell script "perl " & quoted form of ps 

Ensuite, exécutez toutes les commandes avec mouvement do shell script comme ci-dessus. La meilleure chose est que vous pouvez chsnge le script pour ajouter des options comme ne pas écraser si existe "mv -n". Je n'ai pas testé le script juste lu à travers. Vous pourrez peut-être canaliser les commandes afin de pouvoir tout faire en moins d'étapes.

Notez que cela fonctionnera pour les fichiers où le dossier d'origine existe. Si vous avez des situations différentes, vous devez le modifier pour que les dossiers soient créés.

0

Cela fonctionne pour moi avec la dernière version d'OSX Sierra. Vous devrez peut-être ajuster certains des paramètres de délai pour travailler pour vous

tell application "Finder" 
    close every window 
    activate 
    open trash 
    select every item of trash 
    delay 1 
end tell 
tell application "System Events" 
    key code 51 using (command down) 
    delay 1 
    try 
     set theCheckbox to checkbox "Apply to All" of scroll area 1 of window "Copy" of application process "Finder" 
     set applyToAll to perform action "AXPress" of checkbox "Apply to All" of scroll area 1 of window "Copy" of application process "Finder" 
     set replaceButton to perform action "AXPress" of button "Replace" of scroll area 1 of window "Copy" of application process "Finder" 
     if theCheckbox exists then 
      delay 1 
      applyToAll 
      delay 1 
      replaceButton 
     else 
      key code 51 using (command down) 
     end if 
    end try 
end tell