The Core Technologies Blog

Professional Software for Windows Services / 24×7 Operation


Q&A: How do I Restart my Windows Service at a Specific Time every Week?

Restart Windows Service at a Specific Time
  I want to restart some specific service for a specific time every week. Can I use the NET command?

— Shanmuga

Hi Shanmuga.

Yes. With the help of the Windows Task Scheduler, you can use the NET command to restart a specific service at a specific time.

To do so:

1. Find the name of your service

Each Windows Service has two names — a short service name and a friendly display name. We need the service name for the NET command.

If you don’t already know the service name, or want to validate it:

  1. Launch the Windows Services application. You can find it by searching for “services” in the Control Panel, or by running services.msc at a command prompt.

  2. Scroll to locate your service in the list:

    Windows Services application
  3. Double-click the entry to open the service’s properties. The service name is displayed at the top.

Here we see that the name of the Print Spooler service is actually “Spooler”:

Print Spooler service name

2. Create a batch file to restart your service

With the service name in hand, we can now use the NET command to restart the service.

Create a new batch file and enter the following two commands:

NET STOP "Your Service Name"
NET START "Your Service Name"

Please replace Your Service Name with the service name identified in step 1. The quotes are required if the service name contains a space.

For example, if your service name is “Spooler”, the batch file should look like this:

NET STOP "Spooler"
NET START "Spooler"

Save the batch file to a well-known location. We’ll use it in the next step.

Test the batch file

At this point, we recommend performing a quick test to ensure that the batch file works as expected. Run it from an administrative command prompt and confirm that it restarts your service.

3. Create a scheduled task to run the batch file at the time you wish to restart the service

Now that you are able to restart the service with the batch file, let’s schedule it to run whenever you like.

For example, here is how we would restart the Print Spooler service every Sunday at 1 AM:

  1. Open the Windows Task Scheduler. You start it from the Control Panel or by running taskschd.msc from a command prompt.

  2. Click Create Basic Task on the right:

    Task Scheduler: Create Basic Task

    The Create Basic Task Wizard window will come up.

  3. Give the task a descriptive name:

    Enter the task name

    Click Next to continue.

  4. Select Weekly and click Next:

    Set the task to run weekly
  5. Set the day and time to restart the service:

    Set the day and time to restart the service

    Click Next to continue.

  6. Ensure that the action is Start a program and move to the next step:

    Set the action - Start a program
  7. Enter the full path to the batch file you created to restart the service:

    Specify the batch file to restart the service

    Click Next to continue.

  8. Review the summary and make sure that everything looks good.

    Check the Open the Properties dialog… box at the bottom because we’ll need to adjust one of the tasks properties:

    Review the summary of the task

    Click Finish.

  9. And finally, in the Properties window, check the Run with highest privileges box. The batch file must run with administrative rights so that it can restart the service.

    Run the task with highest privileges

    Click OK to save your settings.

Going forward, the new task will come alive at the scheduled time to promptly restart the service. You should be good to go.

Improvement: Use ServicePilot instead of NET for better reliability

Use ServicePilot instead of NET.EXE

While NET.EXE will work for most situations, there are a few scenarios where it may fall short.

Does your service:

  • take longer than 30 seconds to shut down?
  • occasionally hang and refuse to stop?

If so, the NET STOP command may fail. And when that happens, the subsequent call to NET START will fail too (because the service will not be idle). The end result is that your service will be left in an unusable/unresponsive state!

Our free ServicePilot utility was built to work around NET’s shortcomings. It will wait for longer than 30 seconds if necessary and will do its best to forcibly terminate an unresponsive service.

To use ServicePilot instead of NET:

  1. Download ServicePilot from our website. Save the executable in a well-known location (e.g. C:\Apps\ServicePilot\ServicePilot.exe).

  2. Edit the batch file you created to restart the service.

  3. Delete the two NET lines.

  4. Add the following line (adjusting the full path to ServicePilot and your service name as necessary):

    C:\Apps\ServicePilot\ServicePilot.exe -restart -wait 300 "Your Service Name"

    Note: The -wait 300 parameter instructs ServicePilot to wait up to 300 seconds (5 minutes) for the service to stop and restart. Feel free to increase (or decrease) the timeout based your specific use case.

  5. Save the batch file.

As you did with the NET version, please perform a quick test to ensure that the updated batch file works as expected. Launch it from an administrative command prompt and confirm that it restarts your service.

Best of luck with your service!


New! UPDATE: Use our free Service Scheduler utility instead of the Task Scheduler

We got tired of manually creating batch files and scheduled tasks to control our services so we created a free application to do it all. 🙂

With Service Scheduler, you can easily start, stop or restart any Windows Service — daily, weekly or monthly at a time of your choosing:

Service Scheduler

Service Scheduler is completely free and super easy to use. You can schedule your service in seconds:

Service Scheduler: Add Daily Service Task

Download Service Scheduler and check it out today!


Posted in Windows Services | Tagged , , , , , | 2 Comments

2 Responses to Q&A: How do I Restart my Windows Service at a Specific Time every Week?

  1. Райан Ольшевскі says:

    Why would you download a program if your service takes longer than 30 seconds to shut down? This is not needed and is much easier to accomplish…. All you have to do is make you “.BAT” files read as EXACTLY as follows, you also do not need the (“”)….

    net stop Spooler /y
    timeout /t 120
    Net start Spooler

    I have included the (/y) at the end of the first line to also shutdown any services that (Spooler) a service also runs in connection to (Spooler)…. The next line (timeout /t 120) will make the service wait 120 seconds before restarting the service with the 3rd line…. You can obviously change (120) to whatever you like… Just remember that the wait time is in seconds, so whatever number you use other than (120) will be the amount of seconds that is allowed to pass before the service is restarted….. You don’t need to do any of the other nonsense…..

  2. Hi Райан.

    Thanks for your feedback. Adding a fixed timeout is a good solution if simply waiting will be enough for your service to stop.

    But what if the service fails to stop in that time? Or if you want to restart the service as soon as possible, giving it enough time but without always waiting for a fixed period? Or if your service takes a while to start and you want to avoid sending it instructions before it’s ready (i.e. your 3 line snippet is part of a larger batch file)?

    It’s in thorny, real-world situations like those where our free ServicePilot utility shines. We wrote it because several of our customers actually had those problems and we decided to develop a simple utility that offers some benefits over the NET command. And we decided to make it free so that anyone can benefit.

    Of course, you can add more lines to the batch file to make it more robust. That’s a fine option, especially for experienced folks like yourself. But for others who are unable to (or don’t want to) support another complex batch file, ServicePilot is here to help!

Leave a Reply

Your email address will not be published. Required fields are marked *