這是本文件的舊版!


管理系統服務

REM 停止服務
sc stop %SERVICE%
REM 啟動服務
sc start %SERVICE%
REM 查詢服務
sc query %SERVICE%

Create

腳本接受兩個參數:(1)服務名稱;(2)驅動程式完整路徑。流程就是針對輸入參數做檢查,接著確認是否為已加服務,已加就不做,沒加就做。而透過sc query確認服務是否存在的方法,原先確認服務是否存在是透過%errorlevel%是否為1060,但在XP與2003上抓不到正確的%errorlevel%,因此改透過確認服務名稱字串的方式做判斷。另外有特別處理的部分是Driver的路徑,因為有可能路徑包含空格,而造成User在傳入參數時加上雙引號。為了避免判斷或建立服務時不好處理,在一開始就做了字串取代把雙引號給變成空字串。

@echo off
set SERVICE=%1
set BINPATH=%2
set BINPATH=%BINPATH:"=%
 
if "%SERVICE%" == "" (
	echo Please enter the service name.
	exit /b 2
)
if "%BINPATH%" == "" (
	echo Please enter the driver path.
	exit /b 2
)
 
if not exist "%BINPATH%" (
	echo Driver path[%BINPATH%] is incorrect!
	exit /b 2
)
 
sc query %SERVICE% | findstr %SERVICE% > NUL
if errorlevel 1 (
	sc create %SERVICE% binPath= "%BINPATH%" type= kernel start= auto error= normal
) else (
	echo Service [%SERVICE%] exists!
)
 
exit /b %errorlevel%

Delete

腳本接受一個參數: 服務名稱。流程就是參數檢查,確認服務是否存在去決定是否執行刪除指令。

@echo off
set SERVICE=%1
 
if "%SERVICE%" == "" (
	echo Please enter the service name.
	exit /b 2
)
 
sc query %SERVICE% | findstr %SERVICE% > NUL
if errorlevel 1 (
	echo Service [%SERVICE%] doesn't exist.
) else (
	sc stop %SERVICE%
	sc delete %SERVICE%
)
 
exit /b %errorlevel%