I am trying something which may work, and I will let you know if it works for me. Since scripts which run often (like every minute) run no matter what time of day the router has, the following script will run every minute, and if the router has recently rebooted, it will remove a scheduled script and write it again in the scheduler. Therefore, the script should run on time the next time it is called. After the schedule is rewritten, the script no longer rewrites the schedule again even though it checks every 1m to see if it need to rewite them. The example is below.
/system scheduler add name=reset-script1 interval=1m start-date=dec/31/1970 on-event={:if ($a <= 1) do {/sys sch rem [/sys sch find name=scriptname]; /sys sch add name=scriptname interval=24h start-date=dec/31/1970 start-time=4:00:00 on-event=ebackup disabled=no}; :global a ($a+1)} disabled=no
The scheduled script should be successfully rescheduled for 4am. I am testing it now. Let me know if you have any feedback.