Ho il seguente flusso di lavoro che devo eseguire quotidianamente per un periodo di giorni:
Icomputersiavvianoinunmomentospecifico,MathematicaeunospecificotaccuinoMathematicavengonolanciatievalutati.QuindihobisognodiusciredaMathematicaalivellodiprogrammazioneelasciarecheiprogrammirilevantichiudanoicomputer.HoelaboratotuttoquitranneilpassaggioevidenziatoperusciredaMathematicaconun'applicazioneApplescript.
PercominciarehocreatounasempliceapplicazioneusandoilEditordiApplescript:
tellapplication"Mathematica" to quit
Questo spegnerà Mathematica se il taccuino aperto è stato salvato e il notebook lo fa da sé. Ora ho bisogno di aggiungere un timer all'applicazione Applescript.
Una domanda precedente Automazione del flusso di lavoro o AppleScript per chiudere Safari dopo un periodo di tempo fa qualcosa di simile che speravo di adattarmi alle mie esigenze. Mostra il seguente codice:
global quit_after, check_every
set quit_after to 2700
set check_every to 10
set minute to quit_after / 60
display dialog "Check is performed every " & check_every & " seconds. Things will be quit after " & minute & " minutesof system inactivity."
on reopen
display dialog "Check is performed every " & check_every & " seconds. Things will be quit after " & minute & " minutes of system inactivity."
end reopen
on idle
set idletime to do shell script "echo $(('ioreg -c IOHIDSystem | sed -e '/HIDIdleTime/ !{ d' -e 't' -e '}' -e 's/.* = //g' -e 'q'' / 1000000000))"
if (idletime as integer) > quit_after then
tell application "System Events"
if ((name of processes) contains "Safari") then
tell application "Safari" to quit
end if
end tell
end if
return check_every
end idle
Non ho bisogno delle finestre di dialogo e voglio che chiuda Mathematica dopo aver detto 15 minuti, quindi ho provato questo come un passo successivo verso una soluzione.
global quit_after, check_every
set quit_after to 900
set check_every to 10
set minute to quit_after / 60
on idle
set idletime to do shell script "echo $(('ioreg -c IOHIDSystem | sed -e '/HIDIdleTime/ !{ d' -e 't' -e '}' -e 's/.* = //g' -e 'q'' / 1000000000))"
if (idletime as integer) > quit_after then
tell application "System Events"
if ((name of processes) contains "Mathematica") then
tell application "Mathematica" to quit
end if
end tell
end if
return check_every
end idle
Non funziona.
Quindi ho due domande, qualcuno può suggerire:
- Come far funzionare il mio codice modificato?
- Come modificarlo in modo che spegnerà Mathematica in un momento specifico solo nei giorni feriali?
Questi ultimi funzionerebbero meglio per me in quanto penso che avrei meno conflitti se chiudessi Mathematica in un momento specifico piuttosto che dopo un certo periodo di tempo.