I have written several batch processes that run on week days within specific time limits by simply using the GregorianCalendar class. Get the current time. Then get the time you want it to run from a properties file or something. Compare the current time and check if it lies within the range specified. If it does then execute else loop.