Avatar of Luis Diaz
Luis Diaz
Flag for Colombia asked on

Batch or VBscript : stop/start tomcat locally

Hello experts,

I have in multiple machines tomcat app I would like through a script to automatically stop the tomcats of every server without connecting to every machine that means to launch from my local machine the script and stop-start the tomcats application of different servers.
All the servers have Windows server 2008 OS.


IP machine B

Machine A
start tomcat

IP machine B
start tomcat

Thank you in advance for your help.
Windows BatchMicrosoft DOS

Avatar of undefined
Last Comment
Steve Knight

8/22/2022 - Mon
Steve Knight

If they are a member of a domain most easily then don't need to authenticate to each and can just use SC.exe

e.g. stop service, wait 10 secs, start it again.

sc \\servername stop "Service Name"
ping -n 10
sc \\servername start "Service Name"
sc \\severname query "Service Name"

The Service name is the one shown in a list from sc query and may not match what you see in services GUI.

If you have a handful of machines you can just list the commands, or do it as a subroutine for each, or read from a text file, e.g.

@echo off
set error=
set logfile=logfile.txt
del %logfile% 2>NUL

call :restart Server1 "ServiceName"
call :restart Server2 "ServiceName1"
call :restart Server3 "ServiceName1"

if "%error%"=="" (
  echo No errors
) ELSE (
  echo Errors:
  echo %error%
START "" "%logfile%"

exit /b

REM Restart service listed
sc \\%1 stop %2
if errorlevel 1 set error=%error%[%1 - %2 - %errorlevel% STOP],
ping -n 5
sc \\%1 start %2
if errorlevel 1 set error=%error%[%1 - %2 - %errorlevel% START],
sc \\%1 query %2 >> %logfile%
exit /b

Open in new window

Steve Knight

To read a text file instead, replace:

call :restart Server1 "ServiceName"
call :restart Server2 "ServiceName1"
call :restart Server3 "ServiceName1"

Open in new window

with a for loop to read the file:

for /f "delims=," %%a in ('type yourtextfile.txt') do call :restart %%a %%~b

Open in new window

and your text file formatted as:

Server1 "ServiceName"
Server2 "ServiceName1"

Open in new window

Luis Diaz

Hello Steve Knight,

I tried your sc solution and it works. What is the pourpose of  "ping -n 10"?

Concerning the second solution Is it possible to:
add an a specific path to ouput the log file ? And have a script just for stopping the tomcat and another for the restart?

Thank you in advance .
Your help has saved me hundreds of hours of internet surfing.
Steve Knight

Sure. Ping just to add delay betwern stop and start. Probably not needed for most, remove it and see.

You can just save batch again leaving out the sc stop or start line.

Can post example but on phone at mo.

Steve Knight

View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.