• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Zeitgesteuertes Ausführen von Befehlen

TBH

Alkmene
Registriert
28.12.06
Beiträge
31
Hallo liebe User,
ich habe ein Applescript geschrieben, welches schon mehr oder weniger Zeitgestuert ein routine ausführt. Die ungefähre Struktur wäre so:

...
routine(1.5,3)
...
on routine(zeit, parameter)
delay zeit * 3600
....
end routine

Man kann also das Skript starten und die Ausführung des Befehls beliebig verzögern durch Übergabe einer Wartezeit. Da dies aber recht umständlich ist, und es einfacher wäre, statt der Verzägerungszeit einfach eine direkte Uhrzeit anzugeben (zb 1932 für 19:32 Uhr), wollte ich mal fragen, wie man solche Probleme am elgantesten löst?

Ich dachte an eine schleife, die z.B. alle 30Sek. die routine aufruft. Diese wiederum überprüft dann, ob die oben vorgegebene Zeit erreicht ist und führt dann ihren code aus.
Für mich klingt das allerdings ein wenig unsauber und ich weiß leider nicht, wie man in applescript überhaupt mit Zeit arbeitet, wie ich also an aktuelle stunde und minute komme.

Ich wäre für Tipps bezüglich der Ausführung des Problems, also der Uhrzeitgestuerten Ausführung, und auch für Hinweise oder Links zum Arbeiten mit Zeiten (hour, minute) in Applescript sehr dankbar :)

Viele Grüße,

TBH
 

zeno

Lane's Prinz Albert
Registriert
05.11.05
Beiträge
4.894
Für einmaliges starten zu einem bestimmten Zeitpunkt bietet sich auch at an.
Code:
man at
 

dust123

Luxemburger Triumph
Registriert
13.02.05
Beiträge
498
Oder einfach Cronnix verwenden.

Oder noch einfacher: Im Kalender (iCal) einen Termin eintragen und im Feld "Erinnerung" die Option "Skript ausführen" verwenden.
 

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
@zeno
at run ist unter Mac OS X aus Sicherheitsgründen inaktiv!

In AppleSkript gibts übrigens einen on idle Handler mit dem man solche Dinge machen kann. Was auch immer Dein Skript tut.
Gruß Pepi
 

joey23

Hochzeitsapfel
Registriert
26.11.06
Beiträge
9.247
Alles viel zu Umständlich: Du kannst in iCal als erinnerung ein belibiges Script ausführen lassen!

Joey
 

TBH

Alkmene
Registriert
28.12.06
Beiträge
31
Erstmal vielen Dank für die Antworten. Die iCal-Methode erscheint auch sehr umständlich, da "routine" mehrmals zu verschiedenen Zeitpunkten ausgeführt werden soll:

...
routine(1.5,3)
routine(2,7) -- zwei stunden nach der ersten
routine(...
...
on routine(zeit, parameter)
delay zeit * 3600
....
end routine

Es wären also bis zu 20x zu verschiedenen Zeiten. Und das ist auch per iCal zu umständlich und unübersichtlich, leider. Für Cronnix wäre es ja notwendig, für jedesmal, wo die routine auszuführen wäre, einen cronjob anzulegen, habe ich das richtig verstanden? Erscheint mir auch wieder ein wenig kompliziert im Vergleich zu "1x auf Starten drücken und das Skript laufen lassen"...

nichts desto trotz nochmal danke an alle Antworter,

TBH
 

space

Neuer Berner Rosenapfel
Registriert
02.12.05
Beiträge
1.949
Wie schon erwähnt, wäre on idle dann die beste Wahl...
Mit etwas Trickserei kann man -mehr oder weniger- Uhrzeiten in AS benutzen, aber eigentlich sind Sekunden (ab Mitternacht) die Zeitangabe:

Code:
property my_list : {45480, 45490, 45500}
on idle
	
	set Werktags to {Monday, Tuesday, Wednesday, Thursday, Friday}
	if Werktags contains ((current date)'s weekday) and ((current date)'s time is in my_list) then
		tell application "Finder"
			delay 1
			make new Finder window
		end tell
	end if
	
	return 1
end idle



Launchd ist natürlich eine bessere Wahl, wie auch cron.
Cronnix nutze ich nicht, aber es sollte dort genau so funktionieren, wie im Terminal selber:

30 8-20/2 * * 1-5 würde z.B. dein Script von Montag bis Freitag alle 2 Stunden zwischen 8:30 und 20:30 ausführen.
 

TBH

Alkmene
Registriert
28.12.06
Beiträge
31
Ich habe es jetzt mit on idle gelöst, vielen Dank für die Hilfe an alle, ihr habt mir sehr geholfen!