Ich habe versucht, ein Skript auf verschiedene Weise zu einem bestimmten Zeitplan / zu einer bestimmten Zeit auszuführen. Ich fand Lingon ziemlich praktisch. Ich versuche auch, den Kalender zu verwenden, aber das Ergebnis war sehr schlecht.
Ich habe das geschrieben :
repeat
set myDate to date string of (current date)
set myTime to time string of (current date)
set myDateTime to myDate & " - " & myTime
if myTime > "11:30:00" and myTime < "11:30:10" then
display notification "demo - This is the time"
end if
end repeat
was gut zu funktionieren scheint, aber offensichtlich ein paar Benachrichtigungen generiert. Wie kann ich ein Skript nur einmal ausführen, wenn diese Bedingung gefunden wird?
Ich dachte, ich kann mit etwas Verspätung spielen, aber dann mache ich mir Sorgen, dass ich die Zeitbedingung verpassen würde.
Dies ist nur eine etwas effizientere Wiederholung der vorhandenen Antwort ...
set gIsThisTime to false
repeat until gIsThisTime is true
delay 60
set myTime to time string of (current date)
if myTime > "1:15:00 pm" and myTime < "1:20:00 pm" then
set gIsThisTime to true
end if
end repeat
set myDate to date string of (current date)
set myDateTime to myDate & " - " & myTime
display notification "time = " & myDateTime
Hinweise:
Auslassen von am/pm bedeutet, dass es entweder am oder am Nachmittag ausgelöst wird, was immer es zuerst trifft,
es funktioniert nicht im 24-Stunden-Format, also wird 13:15:00 nicht ausgelöst
ÜBERARBEITETE LÖSUNG:
Der AppleScript-Code, den ich in meiner ersten Lösung verwendet habe, verwendete eine repeat until theTime is greater than or equal to requested_time
Schleife mit einem delay 10
Befehl, um die aktuelle Zeit alle 10 Sekunden mit der angeforderten Zeit zu vergleichen. Obwohl dieser Code als Skript oder Anwendung ausgeführt wurde, verbrauchte er keine große Menge an Systemressourcen ... Das Speichern des neuen folgenden AppleScript-Codes als offen bleibende Anwendung mit einem on run
and- on idle
Handler hatte meiner Meinung nach deutlich weniger Auswirkungen auf den Systemressourcen. Speichern Sie den folgenden AppleScript-Code als geöffnet bleibende Anwendung.
Wenn diese App ausgeführt wird, können Sie Ihre gewünschte Zeit eingeben und dann eine Datei oder App auswählen, die zu diesem bestimmten Zeitpunkt gestartet werden soll.
Dieser AppleScript-Code funktioniert bei mir mit der neuesten Version von macOS Mojave.
global chosenApp
property theTime : missing value
property requested_time : missing value
on run
set theTime to time string of (current date)
activate
set requested_time to text returned of (display dialog ¬
"Please Enter Your Start Time With The Following Format: Hour:Minutes:Seconds" default answer theTime ¬
buttons {"CANCEL", "OK"} default button "OK" cancel button "CANCEL" with title ¬
"Choose App Launch Time")
activate
set chosenApp to choose file with prompt ¬
"Choose The App Or File You Would Like To Run At Your Specified Time" without multiple selections allowed, invisibles and showing package contents
end run
on idle
runAtSpecificTime()
return 30 -- in seconds
end idle
on runAtSpecificTime()
set theTime to time string of (current date)
if theTime is greater than or equal to requested_time then
tell application "Finder" to open chosenApp
quit me
end if
end runAtSpecificTime
on quit
continue quit -- allows the script to quit
end quit
Ok ich glaube ich habe es gefunden:
set isThisTime to false
repeat
set myDate to date string of (current date)
set myTime to time string of (current date)
set myDateTime to myDate & " - " & myTime
if myTime > "11:30:00" and myTime < "11:47:26" then
set isThisTime to true
exit repeat
end if
end repeat
if isThisTime is true then
display notification "in the time"
end if
Benutzer3439894
Kevin