Eine aktuell geöffnete Datei direkt in der Anwendung löschen?

Die Fähigkeit von OS X, eine aktuell geöffnete Datei direkt in der Anwendung umzubenennen oder zu verschieben, ist wirklich praktisch:

Geben Sie hier die Bildbeschreibung ein

Um noch einen Schritt weiter zu gehen, gibt es einen Trick, um die aktuelle Datei auch in der App zu löschen ? (Offensichtlich müsste das „Schließen“ der Datei die zweite Hälfte des Prozesses sein.)

Es würde viel Zeit sparen, die Datei nicht schließen, manuell im Finder suchen und dann in den Papierkorb verschieben zu müssen – sondern sie einfach an Ort und Stelle zu löschen.

Ich habe versucht, die „Datei“ (mit dem Dateisymbol links neben dem Dateinamen im Fenstertitel) auf das Papierkorbsymbol im Dock zu ziehen, aber das verschiebt sie nicht wirklich in den Papierkorb.

Das Beste, was mir einfällt, ist, ~/.Trashdas Verzeichnis als Element in den Finder-Favoriten hinzuzufügen und dann das „Wo“ im obigen Screenshot in die erstellte Favoritenverknüpfung „Papierkorb“ zu ändern, gefolgt von einem Cmd+ W, um es zu schließen.

Es ist ein wenig klobig, aber es ist nicht schlimm.

Gibt es also einen raffinierten Automator-Workflow / AppleScript (der dann einfach einem Hotkey zugewiesen werden kann), um den obigen Prozess zu beschleunigen? Ideal wäre ein einzelnes AppleScript, das sowohl den Schritt zum Verschieben der aktuellen Datei in das Verzeichnis „Papierkorb“ als auch den anschließenden Tastendruck von Cmd + W nach einer Lücke von 200 ms ausführen könnte.

Antworten (2)

Ich verwende dieses AppleScript:

tell application (path to frontmost application as text)
    set f to POSIX file (path of document 1) as text
    close document 1
end tell
tell application "Finder" to move f to trash

Eine hackigere Version, die mit ein paar weiteren Anwendungen funktioniert:

try
    tell document 1 of application (path to frontmost application as text)
        set f to path
        close
    end tell
on error
    tell application "System Events" to tell (process 1 whose frontmost is true)
        value of attribute "AXDocument" of window 1
        set f to do shell script "x=" & quoted form of result & ";x=${x/#file:\\/\\/};x=${x/#localhost/};printf ${x//%/\\\\x}"
        keystroke "w" using command down
    end tell
end try
POSIX file f
tell application "Finder" to move result to trash
Es scheint nicht mehr zu funktionieren, zumindest in macOS High Sierra. Wissen Sie, wie dieses AppleScript jetzt aussehen sollte, um noch gültig zu sein?

Probieren Sie dieses AppleScript in einem Automator-Dienst aus (Sie können jedem Dienst einen Hotkey zuweisen):

on run
    set x to path to frontmost application as string
    tell application x to if exists document 1 then
        try
            try
                set p to path of front document -- some app use --> path of document
                p
            on error
                set p to file of front document -- some app use -->  file of document
            end try
            my moveToTrash(p)
            close front document
        on error
            my speakText("can't delete this document")
        end try
    else
        my speakText("You have no open document in that application")
    end if
end run

on moveToTrash(p)
    if p starts with "/" then -- some app return posix path
        set tFile to p as POSIX file as alias
    else -- some app return HFS path
        set tFile to p as alias
    end if
    tell application "Finder" to delete tFile
end moveToTrash

on speakText(t)
    say t
end speakText

Ich habe das Skript mit diesen Anwendungen getestet ( "BBEdit", "TextWrangler", "TextEdit", "Preview", "QuickTime Player", "Pages", "Numbers", "Keynote", "Automator", "AppleScript Editor", " Xcode" ) auf Mavericks

Dieses Skript funktioniert nicht mit einigen Nicht-Apple-Anwendungen.

So weisen Sie dem neu erstellten Dienst eine Tastenkombination zu:

Öffnen Sie die Anwendung „Systemeinstellungen“, navigieren Sie zum Einstellungsbereich „Tastatur“ und wählen Sie die Registerkarte „Kurzbefehle“. Wählen Sie aus der Liste auf der linken Seite des Einstellungsbereichs die Kategorie Dienste aus. Rechts wird eine Liste der installierten Dienste angezeigt. Scrollen Sie zur letzten Kategorie mit dem Titel „Allgemein“ und suchen Sie den Dienst, den Sie gerade erstellt haben. Doppelklicken Sie ganz rechts neben dem Dienstnamen, um das Tasteneingabefeld zu aktivieren, und geben Sie dann die Tastenkombination ein, die Sie dem Dienst zuweisen möchten. Schließen Sie die Anwendung Systemeinstellungen.