|
Answer» Special thanks to all of you helping me to solve some problems while I was building this script.
Here is a script to manage (show, backup, restore, config) MS Windows service's START_TYPE setting. There are 2 METHODS to config service's START_TYPE:
- a method BASED on a file Conf.LOG containing (for example):
Code: [Select]ServiceName1:auto Service Name 2:auto Service_Name3:demand Service Name4:demand ServiceNameMNO:disable Service Name XYZ:disable - a method based on 3 string variables (one for each START_TYPE VALUE), where service names are SEPARATED by "/": Code: [Select]SET sAUTO=ServiceName1/Service Name 2 SET sDEMA=Service_Name3/Service Name4 SET sDISA=ServiceNameMNO/Service Name XYZ
Some web sites helping to build your own config: for Vista http://www.blackviper.com/WinVista/servicecfg.htm http://www.tweakhound.com/vista/tweakguide/page_8.htm http://www.speedyvista.com/servicesDetail.html for XP http://www.blackviper.com/WinXP/servicecfg.htm http://www.tweakhound.com/xp/xptweaks/supertweaks6.htm
Any comment, improvement, will be appreciate. I tested this script on Windows XP Pro SP2. Thanks and regard.
Code: [Select]::------------------------------ MANAGER For Windows Service's START_TYPE - v1.0 @ECHO OFF &SETLOCAL &CD /D "%~DP1" @SETLOCAL ENABLEDELAYEDEXPANSION SET u=.\
:CHOI ECHO.------------------------------------------------- ECHO.MS Windows Service's START_TYPE MANAGER ECHO. ECHO. SHOW Current Services : 1 ECHO. BACKUP Service's START_TYPE : 2 ECHO. RESTORE Service's START_TYPE : 3 ECHO. CONFIG Service's START_TYPE based on a file : 4 ECHO. CONFIG Service's START_TYPE based on 3 vars : 5 ECHO. SET Select= SET Choice= SET /P Select=----------------------- Select an action (1-5): ECHO. IF /i '%Select%'=='1' GOTO SHOW IF /i '%Select%'=='2' GOTO BKUP IF /i '%Select%'=='3' GOTO REST IF /i '%Select%'=='4' GOTO CON1 IF /i '%Select%'=='5' GOTO CON2 IF /i '%Select%'=='' GOTO Fin ECHO.ERROR: Invalid Choice "%Select%" &GOTO CHOI
:SHOW ::--------------------------------------- SHOW Service's NAME & START_TYPE SET z=%u%\SrvSHOW.LOG TYPE NUL>"%z%" FOR /f "Tokens=1,2 Delims=:" %%r in ('"SC QUERY state= all"') DO ( IF /i "%%r"=="SERVICE_NAME" (ECHO%%s) IF /i "%%r"=="DISPLAY_NAME" (ECHO. %%s&ECHO.-------------------) )>>"%z%" "%z%" ECHO.&ECHO.1: Done&ECHO.&GOTO CHOI
:BKUP ::----------------------------- BACKUP Service's START_TYPE as a .CMD File SET z=%u%\SrvBKUP.CMd TYPE NUL>"%z%" FOR /f "Tokens=1,2 Delims=:" %%r in ('"SC QUERY state= all"') DO ( IF /i "%%r"=="SERVICE_NAME" (Call :SUB1 %%s) )>>"%z%" TYPE "%z%" ECHO.&ECHO.2: Done&ECHO.&GOTO CHOI
:REST ::------------------------------------------- RESTORE Service's START_TYPE SET z=%u%\SrvBKUP.CMd IF NOT EXIST "%z%" (ECHO.ERROR: MISSING File [%z%] &ECHO. &GOTO CHOI) Call "%z%" ECHO.----------------------- &ECHO.3: Done. Reboot Your PC &ECHO.&GOTO CHOI
:CON1 ::---------- CONFIG Service's START_TYPE Based on Customized File Conf.LOG CD\ SET z=%u%\Conf.LOG IF NOT EXIST "%z%" (ECHO.ERROR: MISSING File [%z%] &ECHO. &GOTO CHOI) FOR /f "Tokens=1,2 Delims=:" %%r in ('TYPE "%z%"') DO ( SC CONFiG "%%r" Start= %%s ) ECHO.----------------------- &ECHO.4: Done. Reboot Your PC &ECHO.&GOTO CHOI
:CON2 ::------------ CONFIG Service's START_TYPE Based on 3 Customized Variables SET sAUTO=ServiceName1/Service Name 2 SET sDEMA=Service_Name3/Service Name4 SET sDISA=ServiceNameMNO/Service Name XYZ ::------------------------------------------------------------------------------ CD\ FOR %%s in ("%sAUTO:/=" "%") DO (SC CONFiG %%s Start= auto) FOR %%s in ("%sDEMA:/=" "%") DO (SC CONFiG %%s Start= demand) FOR %%s in ("%sDISA:/=" "%") DO (SC CONFiG %%s Start= disabled) ECHO.----------------------- &ECHO.5: Done. Reboot Your PC &ECHO. &GOTO CHOI
:Fin ECHO.END. BYE ..... &PING -n 2 LocalHost>Nul &EXIT
::---------------------------------------------- Sub Routine To Build SC Command :SUB1 SET SrvcName="%*" FOR /F "Tokens=1,3 Delims=: " %%a in ('"SC QC !SrvcName!"') DO ( IF /i "%%a"=="START_TYPE" ( IF /i "%%b"=="AUTO_START" (ECHO.SC CONFiG !SrvcName! Start= auto ) IF /i "%%b"=="DEMAND_START" (ECHO.SC CONFiG !SrvcName! Start= demand ) IF /i "%%b"=="DISABLED" (ECHO.SC CONFiG !SrvcName! Start= disabled) ) ) GOTO :EOF ::______________________________________________________________________________
|