0

假設我有一個服務列表,名稱均以「MyServiceFactory - 」開頭。並非所有的人都會開始,只有少數人會隨着服務的使用而變化。我正在尋找幫助編寫一個批處理程序,只停止正在運行的服務並啓動這些服務(並非所有服務都不重新啓動)。任何幫助表示讚賞批處理程序停止正在運行的服務

回答

1

這應該工作(或者至少給你一個開始):

@echo off 
setlocal 
if "%~1"=="" goto usage 
set tmpFile=templist.txt 
set tmpAnsi=templist_ansi.txt 
wmic /locale:MS_409 service where "caption like '%~1' and state='Running'" get caption /format:csv >%tmpFile% 
REM this is required to convert from Unicode(UCS-2) to ANSI 
type %tmpFile%>%tmpAnsi% 

Echo ---------------Stopping services---------------------- 
Echo. 
for /f "tokens=2 skip=2 delims=," %%i in (%tmpAnsi%) do (
    wmic /locale:MS_409 service where caption="%%i" call stopservice 
) 

Echo --------------Starting services----------------------- 
Echo. 
for /f "tokens=2 skip=2 delims=," %%i in (%tmpAnsi%) do ( 

    wmic /locale:MS_409 service where caption="%%i" call startservice 
) 

goto end 

:usage 
Echo. 
Echo Usage is: 
Echo %~n0 pattern_to_check 
Echo. 
Echo Pattern: 
Echo [ ] Any one character within the specified range ([a=f]) or set ([abcdef]). 
Echo ^^ Any one character not within the range ([^a=f]) or set ([^abcdef].) 
Echo %% Any string of 0 (zero) or more characters 
Echo _ (underscore) Any one character. Any literal underscore  
Echo   used in the query string must be escaped by placing it inside [] 
Echo. 
Echo  If pattern contains spaces, it must be enclosed in double quotes 

:end 

假設你的名字你的批處理文件batch.bat,你會稱它爲batch.bat "MyServiceFactory -%"

+0

謝謝...我得到「節點」,當我運行上述。我將嘗試更多的調試 – G33kKahuna 2012-02-16 03:37:48

+0

這意味着它無法找到任何正在運行的服務和給定的標題(在服務工具中看到的描述性名稱)。我認爲這是你的名字,因爲它包含空間,但也有內部服務名稱。最好運行'wmic'。在wmic提示符下,exec'service獲取名稱,標題,顯示名稱,狀態 - - 這將顯示所有服務,它們的標題,顯示名稱和狀態。直接運行批次中的第一個查詢,直到獲得您想要的結果,並根據需要更改,然後調整批次。 – wmz 2012-02-16 12:28:57

+0

@ G33kKahuna對不起忘了解決以前給你...看看,它應該幫助 – wmz 2012-02-16 13:57:50

2

您還可以嘗試使用PowerShell。我有一些單行我用它來啓動和停止我們的服務:

缺點是PowerShell命令不給你上什麼是與服務發生像net start做了狀態,但你得喜歡簡潔:)

+1

+1。在PS中Roughy等價的1-liner會是:'get-wmiobject win32_service -filter'name like'srv_name_pattern'and state ='Running'「| foreach {stop-service $ _。name;開始服務$ _。name}' – wmz 2012-02-16 16:11:31

+0

+1爲我完美工作。 – ashes999 2012-03-01 18:25:59

相關問題