Alfred Workflow, um mehrere Dateien in den Dropbox-Ordner zu verschieben

586
astro123

Ich bin sehr neu bei AppleScript. Ich habe häufig Dateien von meinem lokalen Computer für den Dropbox-Ordner freigegeben.

Zum Beispiel:

From: ~/Work/hello.txt To: ~/Dropbox/zzz_ShareMe/hello.txt  cp ~/Work/hello.txt ~/Dropbox/zzz_ShareMe/ # or, just copy files from finder 

Ich habe über AppleScript gegoogelt und einen Workflow erstellt, der NUR EINEN Gegenstand kopiert. Wie können wir jedoch mehrere Dateien auswählen und sie mit einem zugewiesenen Hotkey (ctrl-alt-d) in Dropbox kopieren?

Der Inhalt von NSAppleScript ausführen ist unten aufgeführt:

# Note: we should have ~/Dropbox/zzz_ShareMe folder # on alfred_script(q) tell application "Finder" set source to (POSIX path of (the selection as alias)) do shell script "cp -r" & space & quoted form of POSIX path of source & space & "~/Dropbox/zzz_ShareMe"  end tell end alfred_script 

Ich habe meinen vorläufigen Workflow hier geteilt .

Dieser Workflow funktioniert für eine einzelne Datei. Wenn ich eine Datei im Finder auswähle, kopiert ctrl-alt-d die Datei nach ~/Dropbox/zzz_ShareMe/. Wenn ich mehrere Dateien ausgewählt und diese Tastenkombinationen verwendet habe, wird nichts kopiert .

Wie können wir dieses Problem beheben?

Hilfe wird geschätzt.

Ähnliche Links:

http://www.packal.org/workflow/move
http://www.packal.org/workflow/copymove
https://www.alfredforum.com/topic/4195-move-selected-finder-item/

Update Ich habe ein anderes Skript ausprobiert, aber es schlägt fehl.

Erforderliche Aufgabe:

  1. Wählen Sie im Finder mehrere Dateien aus
  2. ctrl-alt-d
  3. Es sollte alle Dateien in kopieren ~/Dropbox/zzz_ShareMe/.

Das neue Skript ist unten angegeben:

on alfred_script(q)   tell application "Finder"  set source to selection  end tell  if (count of source) is greater than 1 then  set fileList to every item of source  repeat with source in fileList  doMove(source, q)  end repeat  else  doMove(source, q)  end if  end alfred_script  on doMove(source, destination)  set source to (POSIX path of (the source as alias))  set destination to "~/Dropbox/zzz_ShareMe"   do shell script "cp -r" & space & quoted form of POSIX path of source & space & POSIX path of destination  end doMove 
4

1 Antwort auf die Frage

2
CJK

Sie sollten diese Frage idealerweise im Alfred Forum posten . Ihr Problem ist jedoch ziemlich einfach, daher helfe ich gerne hier.

Grundsätzlich ist Ihr AppleScript für den Single-File-Workflow inhärent auf die Verarbeitung einer einzelnen Datei beschränkt, da die Variable sourcein einen alias, einem unären Datentyp (einem einzelnen Wert) erzwungen wird. Es gibt eine Klasse alias list, die - wie der Name schon sagt - für eine Liste von Aliasnamen geeignet ist.

Sie haben auch AppleScript mit Bash-Skript gemischt, was in anderen Situationen sehr nützlich sein kann, aber hier ist es etwas komisch, da es keinen Grund gibt, dies zu tun. Ich gebe Ihnen also separate AppleScript- und Bash-Lösungen.

Der Workflow

Erstellen Sie einen Workflow, der die folgenden Kompromisse Hotkey - Trigger mit dem Run Script ( nicht starten NSAppleScript ) Aktion (siehe Alfred Hilfeseiten für weitere Informationen über diese beiden Aktionen, aber im Allgemeinen, müssen Sie nie verwenden Run NSAppleScript Aktion) :

Alfred Workflow

Doppelklicken Sie auf den Hotkey-Auslöser, um ihn zu konfigurieren. Ich gehe davon aus, dass Sie im ersten Tab ( Hotkey-Einstellungen ) wissen, wie Sie den gewünschten Hotkey einstellen. Setzen Sie das Feld Argument jedoch auch in macOS auf Selection .

Auf der zweiten Registerkarte ( Verwandte Apps ) können Sie die Aktion des Hotkeys so einschränken, dass er nur funktioniert, wenn der Finder den Fokus hat. Ziehen Sie dazu das App-Symbol des Finder in das Listenfeld (am einfachsten lösen Sie das Suchfeld von Alfred aus, geben Sie "Finder" ein und ziehen Sie das Symbol von hier nach dort).

Speichern Sie die Einstellungen.

Das Skript

Doppelklicken Sie auf die Aktion Skript ausführen, um das Editorfenster aufzurufen. Sie können die gewünschte Sprache in der ersten Dropdown-Liste auswählen. Die beiden, an denen wir uns für diese Frage interessieren, sind /bin/bash(oder Ihr gleichwertiger Listeneintrag) und /usr/bin/osascript (AS)(oder gleichwertig).

osascript ist die Engine, die AppleScripts kompiliert und ausführt.

ASverweist auf AppleScript; JSbezieht sich auf JavaScript.

Bash

Wenn Sie sich für die Verwendung von Bash entscheiden, wählen Sie mit Eingabe als argv aus . Löschen Sie den im Bearbeitungsfeld angezeigten Beispielcode, und geben Sie den folgenden Code ein:

cp "$@" ~/Dropbox/zzz_ShareMe 

AppleScript

Wenn Sie AppleScript wählen, spielt der Eingabetyp hier keine Rolle. Löschen Sie den im Bearbeitungsfeld angezeigten Beispielcode, und geben Sie den folgenden Code ein:

tell application "Finder" to reveal ¬ (duplicate (selection as alias list) ¬ to folder "zzz_ShareMe" ¬ of folder "Dropbox" ¬ of home)