Dateien verschieben mit Applescript..

I

in2ane

Neues Mitglied
Thread Starter
Dabei seit
01.02.2005
Beiträge
8
Reaktionspunkte
0
Hallo,

ich habe das Problem, dass ich noch kein osx 10.4 mit Automator habe und eine recht simple Aufgabe zu lösen ist.

Es sollen 6 Ordner ständig überwacht werden, in die Dateien kopiert werden können. Sobald eine Datei reinkommt soll sie auch gleich wieder mit Hilfe eines Applescript in einen anderen Ordner auf einem andere Rechner verschoben werden. D.h. kommt eine Datei in den Ordner "a" soll sie in einen anderen Ordner "A" auf einem anderen Rechner verschoben werden. Landet eine Datei im Ordner "b" soll sie in "B" verschoben werden. Und das Ganze soll als Endlosschleife funktionieren.

Ist doch mit einem Applescript mit Sicherheit ganz simpel zu lösen, oder?
Kann mir jemand von euch helfen?
 
Ob das irgendwie geht würde mich auch interessieren...

Aber kann man eigentlich irgendwie Dateien im Finder von einer Platte auf die andere verschieben (nicht kopieren!)? Da gibt's doch bestimmt ein Tastenkürzel das man gedrückt halten muss...
 
hi,

hochschieb...
ist gerade aktuell auch mein problem:
von einem server soll ständig die aktuelle version eines ordners auf meinem rechner als kopie vorliegen. und, wenn ich nach der heimarbeit wieder im büro bin, sollen meine aktualisierungen automatisch auf den server gepackt werden. sehr komfortabel wäre noch eine jeweilige abfrage vorher ob ein download oder upload erfolgen soll.
unter windows gibts da ein programm (im system integriert) - ich glaub dokumentenmappe - das genau diese anforderungen erfüllt!

vielen dank für eure mühen, suche auch parallel nach einem script, bin aber selbst noch nicht so fit, das ich es gleich mal selbst schreiben würde...
stephan
 
Komisch das es hier noch keine Antwort gibt, noch nicht mal ein RTFM :D

Als kleiner Denkanstoß (irgendwie fehlt hier [applescript][...][/applescript], also muss es ohne Highlighting gehen):
Code:
on idle
	set folder_from to "hd_form:folder:"
	set folder_to to "hd_to:folder:"
	set folderlist to list folder alias folder_from
	try
		repeat with x in folderlist
			if x does not start with "." then
				tell application "Finder"
					try
						move document file (folder_from & x as alias) to folder (folder_to as alias)
					on error
						beep
					end try
				end tell
			end if
		end repeat
	end try
	return 60
end idle

folder_from ist der Ordner, in dem sich die Daten ursprünglich befinden, folder_to der Zielordner

In Zeile 6 wird der Ursprungsordner durchlaufen und in Zeile 10 versucht, jede Datei, auf die das Script trifft, an die Zieldestination zu kopieren. Klappt das nicht, wird ein Beep ausgegeben (man könnte da auch mit Fehlermeldungen, Errorlog o.ä. arbeiten, ihr wollt ja aber auch was machen). Vorher wird in Zeile 7 noch überprüft, ob die Datei mit einem Punkt beginnt, um diese im Finder versteckten Dateien (wie etwa .DS_Store) nicht mit zu kopieren.

Das ganze stecken wir dann in einen idle und legen mit return in Zeile 18 fest, in welchen Abständen das Script laufen soll (in diesem Fall alle 60 Sekunden).

Natürlich könnte man da noch einiges optimieren, so prüft das Script derzeit nicht, ob die Datei im Urpsrungsordner auch schon wirklich komplett übertragen ist oder ob der Urpsrungs- und Zielordner überhaupt existieren (was gerade bei gemounteten Netzwerkvolumes ganz hilfreich wäre).

Matt
 
Zuletzt bearbeitet:
in2ane schrieb:
Hallo,

ich habe das Problem, dass ich noch kein osx 10.4 mit Automator habe und eine recht simple Aufgabe zu lösen ist.

Es sollen 6 Ordner ständig überwacht werden, in die Dateien kopiert werden können. Sobald eine Datei reinkommt soll sie auch gleich wieder mit Hilfe eines Applescript in einen anderen Ordner auf einem andere Rechner verschoben werden. D.h. kommt eine Datei in den Ordner "a" soll sie in einen anderen Ordner "A" auf einem anderen Rechner verschoben werden. Landet eine Datei im Ordner "b" soll sie in "B" verschoben werden. Und das Ganze soll als Endlosschleife funktionieren.

Ist doch mit einem Applescript mit Sicherheit ganz simpel zu lösen, oder?
Kann mir jemand von euch helfen?

Was Du beschreibst ist ein gefundenes Fressen für die Ordneraktionen. Wenn Du das als Skript speicherst und als Ordneraktion aktivierts, wirst Du bei jedem Element gefragt, wo es hin soll, und dann wird es in diesen Ordner verschoben.

Was noch zu tun ist:

  • Fest verdrahten der jeweiligen Zielordner, d.h. Du brauchst sechs Fassungen des Skripts und mußt in jede explizit den Zielordner reinschreiben
  • Verschieben in nicht-lokalen Ordner, das sollte aber je nach Art des entfernten Ordners kein Thema sein, weil der sich ja irgendwo in /Volumes tummeln dürfte.


Code:
property dialog_timeout : 30 -- set the amount of time before dialogs auto-answer.

on adding folder items to this_folder after receiving added_items
	display dialog "Skript läuft"
	try
		tell application "Finder"
			--get the name of the folder
			set the folder_name to the name of this_folder
			set the target_folder to choose folder with prompt "Zielordner auswählen"
			repeat with curr_item in added_items
				move curr_item to target_folder
			end repeat
		end tell
	end try
end adding folder items to
 
Zuletzt bearbeitet:
Hallo,

das ist momentan auch mein Problem - ich habe zwar Automator möchte da aber nicht jedesmal starten. Ich möchte gerne jede datei die mit istock*.* in meinen Bilderordner verschieben alle andern können dort bleiben. Wie kann ich das mit den Ordneraktionen und dem Skript oben hinbekommen?
 
Ciao,
ich denke Du brauchst einfach nur das Skript von eml2306 leicht zu verändern. Ich hab allerdings nicht genau verstanden, welche Files du verschieben willst: alle deren Namen "istock" enthalten?
Falls dem so ist, sollte dies funktionieren:
Code:
on adding folder items to this_folder after receiving added_items
tell application "Finder"
set the target_folder to [i]pfad_zum_Bildordner[/i]
repeat with curr_item in added_items
set n to name of curr_item
if "istock" is in n then                        
move curr_item to target_folder
end if
end repeat
end tell
end adding folder items to
Skript speichern und als Ordneraktion an Deinen Arbeitsordner hängen, fertig. ;)

Buon scripting
Farid
 
Zurück
Oben Unten