Automatisch im Ordner erstellte Dateien verschieben

2

Ich habe ein Projekt von einem ehemaligen Mitarbeiter geerbt, bei dem die Quelle fehlt. Daher versuche ich, Fehler in den temporären Dateien zu beheben, die in einem Verzeichnis erstellt werden. Das Problem ist, dass einige dieser Dateien so schnell erstellt und gelöscht werden, dass ich sie nicht in einen anderen Ordner verschieben kann.

Ich habe versucht, mit AppleScript oder Automator Dateien automatisch zu verschieben. Es scheint jedoch nicht bei Dateien zu funktionieren, die von der App erstellt wurden. Es funktioniert jedoch, wenn ich Dateien in das Verzeichnis im Finder verschiebe.

Ich habe auch ein Loop-Shell-Skript ausprobiert, das ein mv * ausführt, aber nicht alle Dateien abfängt.

Gibt es eine andere Möglichkeit, Dateien automatisch in ein anderes Verzeichnis zu verschieben, bevor sie gelöscht werden, oder zu verhindern, dass die Dateien überhaupt gelöscht werden?

s1rc
quelle

Antworten:

2

Versuchen Sie, eine Funktion von OS X mit dem Namen "Ordneraktionen" zu verwenden.

Klicken Sie mit der rechten Maustaste auf einen Ordner und wählen Sie "Ordneraktionen einrichten".

Es gibt Ihnen eine ganze Liste von Optionen. Diese Optionen sind im Betriebssystem enthalten. Wenn Sie ein Skript ändern möchten, können Sie darauf doppelklicken und ein Duplikat erstellen. Sie können Ihr Skript bearbeiten, um zu tun, was immer Sie wollen. Beispielsweise könnte ich das Skript so codieren, dass nach dem Hinzufügen eines Elements zum Ordner ein Sound abgespielt oder eine E-Mail an mich gesendet wird. Es ist sehr nützlich.

Nachdem Sie Ihr Skript codiert haben, müssen Sie es in den richtigen Pfad verschieben. Gehen Sie zum Finder und wählen Sie "Go" und drücken Sie "Go to Folder". Geben Sie in diesem Pfad: /Library/Scripts/Folder Action Scripts/. Ziehen Sie Ihr Skript in diesen Ordner und legen Sie es dort ab. Möglicherweise werden Sie zur Eingabe eines Kennworts aufgefordert.

Wechseln Sie als Nächstes zu dem Ordner, auf den das Skript angewendet werden soll. Klicken Sie mit der rechten Maustaste und Ihr neues Skript sollte aufgelistet sein. Wählen Sie es aus und drücken Sie Attach.

Es geht los!

Hoffe das hilft.

Weitere Informationen zu Ordneraktionen finden Sie hier

Ryan
quelle
1
Danke für die Antwort. Wie ich in meinem Post erwähnt habe, habe ich diese Methode ausprobiert, um Automator-Workflows oder Applescript-Skripte als Ordneraktionen zu verwenden. Wenn ich eine Datei in den Ordner legen wollte, funktioniert sie ordnungsgemäß. Wenn die Anwendung jedoch eine Datei erstellt, wird die Ordneraktion nie ausgelöst.
s1rc
2

Ich habe das Gefühl, dass, was auch immer Sie versuchen, die Dateien nicht registrieren wird, bevor die App sie löschen kann, wenn Sie sagen, dass es bereits zu schnell ist.

Aber Sie könnten sich launchAgents / Daemons ansehen

launchAgents / Daemons

Viele Arten von Aufgaben, für die keine Benutzerinteraktion erforderlich ist, werden am effektivsten von einem Prozess ausgeführt, der im Hintergrund ausgeführt wird. Sie können einen Daemon oder Dienst verwenden, um:

  • Bereitstellung von Serverfunktionen, z. B. das Bereitstellen von Webseiten.
  • Koordinieren Sie den Zugriff auf eine freigegebene Ressource, z. B. eine Datenbank.
  • Führen Sie die Arbeit für eine Vordergrundanwendung aus, z. B. den Dateisystemzugriff.

Apple bietet hier einen umfassenden Leitfaden

Sie sollten in der Lage sein, einen zu erstellen und den Ordner damit zu überwachen. Der Launch Agent kann Befehle und Skripte ausführen, die Sie zu seinen Programmargumenten hinzufügen.

markhunte
quelle
Entschuldigen Sie die Verzögerung der Antwort. Endlich hatte ich die Gelegenheit, das zu untersuchen. Ich habe einen Startagenten erstellt, um ein sh-Skript zum Verschieben der Dateien auszuführen. Es dauert anscheinend noch ungefähr 5 Sekunden, bis es aus dem Überwachungsverzeichnis ausgelöst wird. Jetzt überlege ich, wie ich das beschleunigen kann. Ich habe jedoch das Gefühl, dass dies möglicherweise nicht möglich ist. Ich habe möglicherweise Pech, wenn es darum geht, diese Dateien zu debuggen.
s1rc