Devido ao modo como o cron faz seu processamento, não tenho certeza se você pode usar o cron por iteself para fazer isso. Na página do manual do cron (8) :
The cron utility then wakes up every minute, examining all stored crontabs, checking each command to see if it should be run in the current minute. When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists).
O Cron não possui um método para identificar entradas já executadas. Então, você poderia fazer isso:
* 16-23 * * 1-5 <script>
Mas, isso apenas informaria ao cron para executar este script a cada minuto das 16:00 às 23:59, contanto que o cron estivesse em execução. (Olhando para a página do manual crontab (5) , eu não acho que você possa fazer "16-24 "ou" 16-0. ")
Então, se você quiser que algo seja executado uma vez entre as 16h e a meia-noite, minha sugestão é que o cron inicie o script a cada 15 minutos, depois das 16h:
*/4 16-23 * * 1-5 <script>
Então, dentro do script , inclua algum método para identificar se o script já foi executado naquele dia.