OS X Snow Leopard: Finder-Automatorelement zum Erstellen einer neuen Textdatei

4

Wie kann ich ein Finder-Automatenelement erstellen, das unter "Dienste" zum Erstellen einer neuen Textdatei in einem Dateiordner angezeigt wird? Ich benutze TextMate, also besser, wenn die Lösung editorunabhängig ist (anstatt TextEdit zu verwenden).

Ricardo Sanchez-Saez
quelle
Solch eine nützliche Operation unter Windows und MacOS fehlt völlig
davidfrancis
Kein Automationsdienst, aber eine neue Schaltfläche in der Symbolleiste - siehe lings Antwort hier: apple.stackexchange.com/questions/84309/…
davidfrancis

Antworten:

1

So mache ich das: Ich erstelle eine Dummy-Textdatei und speichere sie in einem Ordner in meinen Dokumenten (diese wird bei jeder Ausführung des Dienstes als Vorlage verwendet). Ich erstelle dann einen Workflow (Service) wie folgt:

Jetzt müssen Sie nur noch mit der rechten Maustaste auf den Ordner klicken, in dem die neue Datei gespeichert werden soll, und den Dienst auswählen, der durch Speichern dieses Workflows erstellt wurde.

Um die neu erstellte Datei zu öffnen, können Sie eine Aktion "Finder-Elemente öffnen" hinzufügen, in der Sie offensichtlich TextMate anstelle von TextEdit auswählen würden. Um den Editor unabhängig zu machen, können Sie festlegen, dass er mit der Standardanwendung geöffnet werden soll.

Wenn es für Sie sehr wichtig ist, zur Laufzeit nach dem Namen zu fragen, können Sie eine Aktion zum Abrufen von Text hinzufügen und einer zweiten Variablen zuweisen. Fügen Sie dann nach der Kopieraktion eine Umbenennungsaktion hinzu, und sagen Sie "Text ersetzen" und ersetzen Sie den Namen Ihrer Vorlagendatei mit der Textvariablen. Standardmäßig können Sie keine Textvariablen in der von mir beschriebenen Weise verwenden, aber der folgende Beitrag bietet eine Möglichkeit, dies zu umgehen. Ich weiß, dass es unter 10.6 funktioniert und möglicherweise unter früheren Versionen von OSX nicht funktioniert.

siehe hier für Anweisungen

finiteloop
quelle
Das klingt nach der richtigen Antwort für mich.
Darren Newton
Schöne und informative Antwort! Ich würde eine letzte Klarstellung benötigen: Gibt es eine Möglichkeit, eine Automator-Aktion zu erstellen, die sich auf den Ordner auswirkt, den Sie derzeit im Finder anzeigen (und nicht auf den Ordner, den Sie durch Klicken mit der rechten Maustaste auswählen)?
Ricardo Sanchez-Saez
Nicht, dass ich davon Wüste. Das ist der einzige Nachteil. Ich habe versucht, eine Alternative zu finden, damit ich kein Verzeichnis öffnen muss. Da ich jedoch die Spaltenansicht verwende, ist das für mich kein so großes Problem. Ich werde dich wissen lassen, wenn mir etwas einfällt. Halte mich auf dem Laufenden. Dieselbe Methode verwende ich auch zum Erstellen neuer C ++ - Klassen in bestimmten Verzeichnissen. Klappt wunderbar.
Finiteloop
1
segfault, es scheint, dass der Bildlink Ihrer Antwort nicht mehr funktioniert. Könnten Sie sich das mal ansehen? Prost.
Ricardo Sanchez-Saez
1

Das sollte funktionieren:

do shell script "echo '[text for the text file]' > [path to folder & file].txt"

Wenn Sie nur eine leere Textdatei möchten, versuchen Sie Folgendes:

do shell script " > [path to folder and file].txt"

Edit: Ich habe deine Frage nochmal gelesen ... das ist ein AppleScript. Ich habe mehr Erfahrung mit normalem Terminal als mit Automator und AppleScript, aber ich nehme an, Sie können ein AppleScript von Automator aus aufrufen.

trolle3000
quelle
Ich hätte lieber diese Aktionen, um TextMate (oder TextEdit oder einen anderen Texteditor) mit einer leeren Datei zu öffnen. Außerdem möchte ich wissen, wie Sie dies in Automator hinzufügen, damit es im Finder-Menü angezeigt wird, das in der Antwort enthalten ist.
Ricardo Sanchez-Saez
1

Okay, ich habe geschummelt, aber Sie bekommen immer noch einen Automator-Service. Sie müssen TextMate einrichten, um die Shell verwenden zu können (dies geschieht normalerweise bei der Erstinstallation, sodass Sie sie mateüber die CLI verwenden können).

Öffnen Sie Automator und erstellen Sie einen neuen Service

Ziehen Sie unter Dienstprogramme über ein Fenster Shell-Skript ausführen.

Fügen Sie das folgende Skript ein:

cd ~/Desktop;
touch newfile.txt;
mate newfile.txt

Im Grunde bedeutet dies, dass Sie eine Datei mit dem Namen newfile.txt auf Ihrem Desktop erstellen und dann in TextMate öffnen.

Alt-Text

Angefordertes Update:

  1. Öffnen Sie Automater und erstellen Sie einen neuen Dienst
  2. Ziehen Sie über ein Fenster mit der Bezeichnung "Run Applescript"
  3. Fügen Sie das folgende von Olivier Fabré verfasste Applescript ein :

    on run {input, parameters}
    
        tell application "Finder"
            set currentPath to insertion location as text
            set filePath to POSIX path of currentPath & input
        end tell
    
        tell application "TextMate"
            activate
            open filePath
        end tell
    
        return input
    end run
    
  4. Speichern Sie den Dienst

    Automator

Was dies bewirkt:

Wenn Sie Text in einer Anwendung auswählen, wird im vordersten Finder-Fenster eine leere TextMate-Datei mit dem Namen des ausgewählten Texts geöffnet.

Was Sie wahrscheinlich versuchen zu tun:

Andere Personen haben Tutorials zum Erstellen einer TextMate-Schaltfläche in der Finder-Symbolleiste geschrieben, die ein leeres Dokument in diesem Fenster oder eine ausgewählte Datei in TextMate öffnet. So hört es sich an, als ob Sie etwas tun möchten und keinen Automator benötigen.

Darren Newton
quelle
Dies ist hilfreich, aber ich habe hier einige Bedenken. a) Berühren ist nicht erforderlich, da Mate eine Datei erstellt, wenn sie nicht gefunden wird. b) Wie kann ich den Namen des Dateinamens parametrieren? Ein weiteres Problem ist, dass diese Automator-Aufgabe automatisch für den Ordner-Finder ausgeführt werden soll, der angezeigt wird, und nicht für den ausgewählten Ordner.
Ricardo Sanchez-Saez
dann möchten Sie vielleicht etwas Zeit hier verbringen snippets.dzone.com/posts/show/1037
Darren Newton
Netter Link, wenn auch etwas verschlungen. Bieten Sie einen einfacheren schrittweisen Prozess zum Erstellen des von mir benötigten Dienstes an (der Dienst fragt nach einem Textdateinamen, erstellt ihn im aktuellen Finder-Ordner - nicht im ausgewählten Ordner - und öffnet ihn in TextMate), und Sie erhalten den richtigen. Antwort Ruf. ;-)
Ricardo Sanchez-Saez
Ihr Update ist sehr erklärend, danke. Schade, dass ich zwei Antworten nicht als richtig markieren kann. :-(
Ricardo Sanchez-Saez
Vielen Dank für eine nette Erklärung. Ich wollte jedoch, dass der Name des Dateinamens abgefragt wird, anstatt einen Text im Finder auswählen zu müssen. Schade, dass zwei unterschiedliche Antworten als richtig markiert werden können. Vielen Dank für Ihre Bemühungen!
Ricardo Sanchez-Saez
0
try
    tell application "Finder"
        set ans to text returned of (display dialog "" default answer "")

        set opn to 0
        set fn to "new.txt"
        if ans is "," then
            set opn to 1
        else if ans is "/" then
            set opn to 2
        else if character -1 of ans is "," then
            set fn to text 1 thru -2 of ans
            set opn to 1
        else if character -1 of ans is "/" then
            set fn to text 1 thru -2 of ans
            set opn to 2
        end if

        if character -1 of fn is "." then
            set fn to fn & "txt"
        end if

        try
            set p to target of window 1
        on error
            set p to desktop as alias
        end try
        set f to make new file at p with properties {name:fn}
        set selection to f
        if opn is 1 then
            open f
        else if opn is 2 then
            open f using (path to application "TextMate")
        end if
    end tell
end try

Ich verwende dies über FastScripts , aber es sollte auch als Automator-Dienst funktionieren. Und ja, dieses Skript ist selbst für AppleScript-Standards hässlich.

Lri
quelle
0

Eine Modifikation der Antwort von finiteloop, die ein bisschen sauberer ist.

  1. Erstellen Sie einen neuen Service in Automator
  2. "Dienst empfängt ausgewählte" in "Ordner" ändern
  3. Geben Sie die Aktion "Set Value of Variable" ein, und ändern Sie "Storage 1" in eine Variable mit dem Namen "dest".
  4. Fügen Sie die Aktion "Neue Textdatei" hinzu und ziehen Sie die Variable "dest" aus dem Variablenfenster am unteren Bildschirmrand in das Feld "Where". Dies ist einfacher als das Kopieren einer Vorlagendatei.
  5. Speichern Sie mit einem vernünftigen Namen.

Wenn Sie nun auf einen Ordner klicken, können Sie unten im Menü Dienste nach Ihrer Funktion suchen.

Die Funktion wird auch auf der Seite mit den Diensteinstellungen angezeigt. Einstellungen -> Tastatur -> Kurzbefehle -> Dienste (linke Seite). Sie können es hier aktivieren und deaktivieren. Sie können ihm auch eine Tastenkombination zuweisen. Wenn Sie im Untermenü Ordner die Auswahl von genügend Elementen aufheben (maximal vier), wird Ihre Funktion am unteren Rand des Kontextmenüs angezeigt.

Vincent Bauer
quelle