Ho il seguente flusso di lavoro che devo eseguire quotidianamente per un periodo di giorni:
I computer partono in un momento specifico, Mathematica e uno specifico taccuino Mathematica vengono lanciati e valutati. Quindi ho bisogno di uscire da Mathematica a livello di programmazione e lasciare che i programmi rilevanti chiudano i computer. Ho risolto tutto qui tranne il passaggio evidenziato per uscire da Mathematica con un'applicazione Applescript.
Per cominciare ho creato una semplice applicazione usando il Editor di Applescript :
tell application "Mathematica" to quit
Questo spegnerà Mathematica se il taccuino aperto è stato salvato e il notebook lo fa da solo. 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 da spegnere Mathematica in un momento specifico solo nei giorni feriali?
Quest'ultimo avrebbe funzionato meglio per me in quanto penso che avrei avuto meno conflitti se chiudessi Mathematica in un momento specifico piuttosto che dopo un certo periodo di tempo.