19 votes

Existe-t-il un moyen de "remettre" automatiquement tout ce qui se trouve dans la Corbeille ?

Ma femme a vu le dossier "tous les documents" dans le Finder et a décidé de le mettre à la poubelle.

Maintenant, nous avons plus de 9 000 fichiers dans la corbeille et je n'ai pas réussi à trouver un moyen de tout remettre en place en un seul clic.

Pour une raison quelconque, je ne peux "remettre" qu'un seul fichier à la fois.

Y a-t-il un moyen d'automatiser cela ?

11voto

jaberg Points 9509

Si l'option "Remettre en place" est désactivée pour une sélection de plusieurs éléments, cela signifie qu'au moins un des éléments sélectionnés n'a pas son emplacement d'origine dans le fichier .DS_Store du répertoire Trash.

Bien que ce ne soit pas idéal, essayez de sélectionner plusieurs sous-ensembles de fichiers à la recherche de groupes que vous pouvez "remettre". en masse avant de recourir au classement manuel pour les dossiers restants.

5voto

Essayez d'exécuter un script comme celui-ci dans l'éditeur AppleScript :

repeat
    tell application "Finder"
        close windows
        if items of trash is {} then return
        open trash
        activate
    end tell
    tell application "System Events"
        key code 125 -- down arrow
        key code 51 using command down -- command-delete
    end tell
end repeat

Si le Finder affiche une boîte de dialogue de mot de passe lorsque vous essayez de remettre un élément en place, essayez d'ajouter quelque chose comme ceci à la fin de la commande tell application "System Events" bloc :

delay 1
if exists window 1 of process "SecurityAgent" then
    tell window 1 of process "SecurityAgent"
        set value of text field 2 of scroll area 1 of group 1 to "pa55word"
        click button 2 of group 2
    end tell
end if
delay 1

4voto

wch1zpink Points 6067

Ce code AppleScript fonctionne pour moi avec la dernière version de MacOS Mojave.

Ce code parcourt en boucle tous les éléments de la poubelle et les replace à leur emplacement d'origine.

Si l'un des dossiers sources d'origine des fichiers de la Corbeille n'existe plus, la fonction repeat until trashCount is 0 permet de sortir de la boucle. Tous les fichiers restants dans la Corbeille seront uniquement des fichiers qui n'ont pas pu être remis en place pour cette raison.

UPDATE

Comme il est possible de sélectionner un élément du bureau pendant la boucle de répétition du processus de remise à la place des fichiers de la corbeille, l'élément du bureau sélectionné peut être pris dans le processus et être déplacé vers la corbeille. Pour éviter ce scénario, j'ai ajouté un code qui verrouillera les éléments du Bureau actuellement déverrouillés et les déverrouillera également à la fin du script.

Parce que tous les éléments du bureau sont maintenant verrouillés... Pendant le processus de remise à disposition des fichiers de la corbeille, si pour une raison quelconque vous sélectionnez accidentellement un fichier ou un dossier sur votre bureau et que le code tente de traiter cet élément du bureau sélectionné... Il générera une fenêtre de dialogue mentionnant que cet élément est verrouillé et vous demandera si vous voulez continuer à l'envoyer à la corbeille. Le bloc System Events tell vers la fin du script traitera toutes ces boîtes de dialogue qui ont pu être générées.

property desktopFolder : path to desktop
property unlockedFiles : missing value

tell application "Finder" to set trashCount to count of every item of trash

tell application "Finder"
    set unlockedFilesRef to a reference to ¬
        (items of desktopFolder whose locked is false)
    set unlockedFiles to contents of unlockedFilesRef
    try
        set locked of unlockedFilesRef to true
    end try
end tell

repeat until trashCount is 0
    tell application "Finder" to set orphanCount to ¬
        count of every item of trash
    putFilesBack()
    tell application "Finder" to set trashCount to ¬
        count of every item of trash
    if orphanCount is equal to trashCount then exit repeat
end repeat

delay 0.3
try
    tell application "Finder" to close window "Trash"
end try
delay 0.3

tell application "System Events"
    repeat until not (exists of button "Stop" of scroll area 1 ¬
        of window 1 of application process "Finder")
        if exists of button "Stop" of scroll area 1 ¬
            of window 1 of application process "Finder" then
            click button "Stop" of scroll area 1 of window 1 ¬
                of application process "Finder"
        end if
    end repeat
end tell

tell application "Finder"
    close every Finder window
    delay 0.5
    repeat with i in unlockedFiles
        set locked of i to false
    end repeat
end tell

on putFilesBack()
    global trashFiles, trashCount, thisItem
    tell application "Finder"
        set trashFiles to every item of trash
        set frontmost to true
        repeat while not frontmost
            delay 0.1
        end repeat
        my closeFinderWindows()
    end tell
    delay 0.1
    tell application "System Events"
        tell application process "Finder"
            repeat with i from 1 to count of trashFiles
                set thisItem to item i of trashFiles
                delay 0.1
                set frontmost to true
                select thisItem
                delay 0.1
                try
                    key code 51 using {command down}
                end try
                delay 0.1
                my closeFinderWindows()
                delay 0.1
            end repeat
        end tell
    end tell
    tell application "Finder" to set trashCount to count of every item of trash
end putFilesBack

on closeFinderWindows()
    tell application "Finder"
        set finderWindowRef to (a reference to ¬
            (every Finder window whose name is not "Trash"))
        set finderWindowRef to contents of finderWindowRef
        close (items of finderWindowRef)
    end tell
end closeFinderWindows

3voto

Un AppleScript qui "Remettre tous les articles dans la corbeille" a fonctionné pour moi :

Ouvrez "AppleScript Editor" et copiez/collez les lignes ci-dessous, puis exécutez le script autant de fois que nécessaire.

tell application "System Events"
    tell process "Finder"
        repeat 100 times
            tell application "Finder" to open trash
            tell application "Finder" to activate
            key code 126
            key down command
            key code 51
            key up command
            delay 0.2 -- adjust delay as needed
        end repeat
    end tell
end tell
tell application "Finder" to close every window

1voto

Foo42 Points 866

Vous devriez pouvoir mettre en évidence chaque fichier ou au moins le faire par lots incrémentiels, les copier puis les re-coller je crois. Je viens d'essayer et si vous double-cliquez sur votre corbeille puis cliquez avec le bouton droit de la souris sur les fichiers que vous souhaitez restaurer, il y a une option "remettre" qui ne fonctionne que fichier par fichier, comme je l'ai dit, je mettrais en surbrillance puis appuierais sur C-c (commande c) pour copier puis C-v (commande v) pour les recoller.

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