Gibt es eine Möglichkeit, alles im Papierkorb automatisch zurückzusetzen?

16

Meine Frau hat den Ordner "Alle Dokumente" im Finder gesehen und beschlossen, alles in den Papierkorb zu verschieben.

Jetzt haben wir über 9.000 Dateien im Papierkorb, und ich habe keine Möglichkeit gefunden, alles mit einem Klick zurückzusetzen.

Aus irgendeinem Grund kann ich nur jeweils eine Datei zurücksetzen.

Gibt es eine Möglichkeit, dies zu automatisieren?

novicePrgrmr
quelle
1
Wenn sie den Ordner in den Papierkorb gezogen hat, ziehen Sie ihn dann einfach wieder heraus?
Henryaaron

Antworten:

9

Wenn "Zurücksetzen" für eine Auswahl mehrerer Elemente deaktiviert ist, bedeutet dies, dass (mindestens) für eines der ausgewählten Elemente die ursprünglichen Standortinformationen nicht in der .DS_Store-Datei des Papierkorbverzeichnisses gespeichert sind.

Auch wenn dies nicht optimal ist, versuchen Sie, mehrere Teilmengen der Dateien auszuwählen, um Gruppen zu suchen, die Sie massenweise "zurücksetzen" können , bevor Sie die verbleibenden Dateien manuell ablegen .

jaberg
quelle
1
Ich kann scheinbar keine Dateien massenweise "zurücksetzen". Ich kann eine der beiden Dateien auswählen und die Option zum Zurücksetzen ist dort, aber wenn ich beide Optionen auswähle, ist "Zurücksetzen" nicht verfügbar. Daher glaube ich nicht, dass Sie "Zurücksetzen" können. Vielleicht aber mit einem AppleScript ...
Steve Moser
6
Diese Antwort ist falsch. Ich bin in einem Zustand, in dem eine einzelne Datei "Zurücksetzen" kann, aber wenn ich mehr als eine Datei auswähle, kann ich dies nicht, was nicht mit Ihrer Antwort übereinstimmt.
Tom Swirly
Die Antwort ist in der Tat falsch. Ich habe A geflüchtet und B in meinem Papierkorb abgelegt. Wenn ich sie einzeln auswähle, erhalte ich beim Klicken mit der rechten Maustaste die Option "Zurücksetzen". Wenn ich beide auswähle und dann mit der rechten Maustaste klicke, ist die Option "Zurücksetzen" nicht mehr verfügbar.
Schraubenschlüssel
5

Versuchen Sie, ein Skript wie das folgende im AppleScript Editor auszuführen:

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

Wenn Finder ein Kennwortdialogfeld anzeigt, wenn Sie versuchen, ein Element zurückzusetzen, fügen Sie am Ende des tell application "System Events"Blocks Folgendes hinzu:

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
Lri
quelle
Aus irgendeinem Grund lief das für mich sehr langsam, während das von @ThierryKoblentz etwa 50x schneller war. Ich habe nicht untersucht, warum.
Rory
3

Ein AppleScript, das "Alle Elemente in den Papierkorb zurücksetzen", hat bei mir funktioniert:

Öffnen Sie "AppleScript Editor", kopieren Sie die folgenden Zeilen, fügen Sie sie ein und führen Sie das Skript so oft wie nötig aus.

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
Thierry Koblentz
quelle
1
Das hat bei mir unter macOS Sierra geklappt. Zu Ihrer Information: Schlüsselcode 126 ist auf und Schlüsselcode 51 ist die Rücktaste. Sie können die drei Linien - Taste gedrückt ... Taste nach oben ... zu einem ändern: key code 51 using key command down. (Dies wurde aus einer anderen Antwort übernommen. Dateien, die auf meinem Desktop wiederhergestellt wurden, wollten mein Systemkennwort, das mit diesem Skript in Konflikt geriet. Ich habe diese abgebrochen und diese wenigen manuell wiederhergestellt.
Eric Hu
Für mich unter MacOS Mojave war diese Lösung ein Albtraum. Jedes Objekt, das wieder aus dem Papierkorb entfernt wurde, öffnete ein neues Finder-Fenster im Quellordner des Objekts. Dann begann der Code, Elemente im aktuellen Finder-Fenster auszuwählen (einige davon waren Ordner mit Aktionen für angehängte Ordner), die dann ausgelöst wurden.
wch1zpink
3

Dieser AppleScript-Code funktioniert für mich mit der neuesten Version von macOS Mojave.

Dieser Code durchläuft alle Elemente im Papierkorb und setzt sie an ihren ursprünglichen Speicherort zurück.

Wenn einer der ursprünglichen Quellordner der Dateien im Papierkorb nicht mehr vorhanden ist, beendet der repeat until trashCount is 0Befehl die Schleife. Alle verbleibenden Dateien im Papierkorb sind nur Dateien, die aus diesem Grund nicht zurückgesetzt werden konnten.

AKTUALISIEREN

Da es möglich ist, ein Element auf Ihrem Desktop während der Wiederholungsschleife des Vorgangs des Zurücksetzens von Dateien aus dem Papierkorb auszuwählen, kann das ausgewählte Desktop-Element in den Prozess geraten und in den Papierkorb verschoben werden. Um dieses Szenario zu vermeiden, habe ich Code hinzugefügt, der die derzeit entsperrten Desktop-Elemente sperrt und sie auch am Ende des Skripts entsperrt.

Da jetzt alle Desktop-Elemente gesperrt sind ... Wenn Sie während des Zurücksetzens von Dateien aus dem Papierkorb versehentlich eine Datei oder einen Ordner auf Ihrem Desktop auswählen und der Code versucht, das ausgewählte Desktop-Element zu verarbeiten, wird dies ausgeführt Generieren Sie ein Dialogfenster, in dem darauf hingewiesen wird, dass das Objekt gesperrt ist, und fragen Sie, ob Sie es weiterhin in den Papierkorb verschieben möchten. Der Tell-Block "Systemereignisse" gegen Ende des Skripts verarbeitet möglicherweise generierte Dialogfelder.

property desktopFolder : path to desktop
property unlockedFiles : missing value

tell application "Finder"
    set trashCount to count of every item of trash
    set unlockedFiles to (items of desktopFolder whose locked is false)
    repeat with i in unlockedFiles
        set locked of i to true
    end repeat
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 1

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

tell application "Finder"
    close every Finder window
    delay 1
    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
wch1zpink
quelle
Das OP ist ca. 7,5 Jahre alt. Obwohl es nicht mehr für das OP-Problem gilt, ist es dennoch schön, ein aktualisiertes automatisiertes Skript zu haben, das die Releases von macOS verwaltet und ein neues Fenster mit der zurückgegebenen Datei öffnet. Sie sollten den Benutzer wahrscheinlich als Verwendungshinweis darüber informieren, dass er den Computer aufgrund der Art des UI-Skripts erst dann berühren darf, wenn er fertig ist. Muss nicht unbedingt eine Nachricht sein, die beim Ausführen des Skripts angezeigt wird, sondern ein Hinweis in der Antwort.
user3439894
Übrigens hätte ich +1, aber der Fehler in der Wiederholungsschleife ist inakzeptabel, weil er codiert werden könnte, um die Situation zu behandeln, die ihn verursacht!
user3439894
@ user3439894 Ich habe den Code aktualisiert ... Wo ist meine +1? LOL
wch1zpink
1
Sehen Sie, wie einfach das war! :) +1
user3439894
1

Sie sollten in der Lage sein, jede Datei hervorzuheben oder zumindest in inkrementellen Stapeln zu erstellen. Kopieren Sie sie und fügen Sie sie meiner Meinung nach erneut ein. Ich habe es gerade ausprobiert und wenn Sie auf Ihren Papierkorb doppelklicken, können Sie mit der rechten Maustaste auf die Dateien klicken, die Sie wiederherstellen möchten. Es gibt eine Option "Zurücksetzen", die nur Datei für Datei funktioniert dann Cv (Befehl v), um sie wieder einzufügen.

Gmenfan83
quelle
1

Das hat bei mir funktioniert:

  • Erstelle einen neuen Ordner im Finder, ich habe meine "wiederhergestellten Dateien" genannt
  • Öffnen Sie den Ordner "Papierkorb" und wählen Sie eine Gruppe von Dateien aus
  • Kopieren Sie die Dateien und fügen Sie sie in den Ordner "Wiederhergestellte Dateien" ein.

Verwenden Sie diese Technik, wenn Sie einen großen Ordner oder eine große Anzahl einzelner Dateien wiederherstellen müssen. Wenn Sie nur 1 oder 2 Dateien benötigen, verwenden Sie einfach die Funktion "Zurücksetzen".

Marcy Freeman
quelle
1
Falsch - dies "setzt" die Dateien nicht zurück und behebt das Problem nicht. Es nimmt sie alle und wirft sie auf einen großen Stapel.
Tom Swirly
1

Vor Snow Leopard hat OS X nicht die Möglichkeit, Dateien an ihren ursprünglichen Speicherorten wiederherzustellen, von denen sie gelöscht wurden (wie dies in einer Windows-Umgebung mit der Option "Wiederherstellen" im Kontextmenü des Papierkorbs möglich ist). Ich habe aus Versehen das Gleiche getan wie Ihre Frau, als mehr als 10.000 Dateien gelöscht wurden.

Nachdem ich alle meine Optionen erkundet hatte, führte ich eine Systemwiederherstellung über Time Machine durch. Es war bei weitem die zweckmäßigste Methode, diese Dateien an ihren richtigen Speicherort zu bringen.

Mort
quelle
2
Nun, wie Sie hier leicht aus anderen Antworten ableiten können, ist es möglich, Dateien / Ordner aus dem Papierkorb zurückzusetzen: Öffnen Sie den Papierkorb, klicken Sie mit der rechten Maustaste auf eine Datei und wählen Sie "Zurücksetzen".
Nohillside
1

Ziehen Sie alle Dateien aus dem Papierkorb auf die Registerkarte Alle meine Dateien im Finder. Wenn Sie viele Dateien haben, dauert es eine Weile. Wir haben über 10000 Dateien getestet. Finder stellt alle Dateien an ihrem ursprünglichen Speicherort wieder her.

Jacob Cereteli
quelle
2
Dies macht unter macOS Sierra nichts
Cyril Duchon-Doris
0

Basierend auf einer Near-Lösung, die @thierry hier bereits von Giacomo Balli gegeben hat , haben wir diese Lösung erstellt , um mehreren von Ihnen zu helfen, da das Problem immer noch besteht. Wenn Sie eine Datei in MacOS löschen , werden ihre ursprünglichen Speicherorte in der gespeichert.DsStoreversteckte Dateien für den Fall, dass Sie es wiederherstellen möchten. Neuere Versionen von macOS haben die Möglichkeit, Dinge in den Papierkorb zu verschieben, wo sie herkommen, und zwar blitzschnell und viel schneller als per Drag & Drop. Wenn Sie also auf das Papierkorbsymbol in Ihrem Dock klicken, werden die Objekte, die Sie haben, als Papierkorb angezeigt. Klicken Sie mit der rechten Maustaste oder bei gedrückter Ctrl-Taste auf eine Datei (oder halten Sie die Befehlstaste gedrückt, um mehrere Elemente auszuwählen, und klicken Sie dann bei gedrückter Ctrl-Taste). Die Option Zurücksetzen wird angezeigt. Das einzige Problem ist, dass wir es immer nur für einen Artikel gleichzeitig machen lassen.

Lösung

  1. Beginnen Sie, indem Sie das Repository auf Ihren lokalen Computer klonen, damit Sie beginnen können, unsere Lösung zu verwenden.

    Git-Klon [email protected]: opprDev / trash-back.git

    CD-Mülleimer

  2. Führen Sie das AppleScript auf diesem Computer mit dem Befehl osascript aus.

    osascript scripts / trash-back.scpt

Schlussfolgerungen

Durch das Ausführen von AppleScript wird die Remotefunktion von der Befehlszeile aus erheblich erweitert, und es werden viele coole Tricks ermöglicht, die ansonsten nur schwer möglich sind. Während Sie ganze Skripte in der Befehlszeile ausführen können, handelt es sich bei dieser Art der Ausführung nur um die Ausführung. Sie können sich auch bei einem Remotecomputer anmelden (mit ssh) und das AppleScript auf diesem Computer über den osascriptBefehl ausführen . Der osascriptBefehl kann auch eine andere Open Scripting Architecture- Sprache mit dem Modifikator -l ausführen.

Francisco Maria Calisto
quelle