2014-10-06 25 views
0

我試圖創建一個bat腳本來檢查不同服務(使用服務控制)在不同機器上的狀態並將其輸出到文本文件。 例如:在同一個txt文件中保存多個條目(Windows服務控制)

sc (machine name) query eventlog > serviceStatus.txt 
sc (machine name) query Wecsvc > serviceStatus.txt 

任何人都可以建議如何我可以輸出不同的窗口服務於同一個文本文件的狀態? 我試圖用逗號分隔的查詢,但它似乎並沒有被正確的語法..

我想另一件事有關: 當我運行上面的代碼輸出:

SERVICE_NAME: eventlog 
    TYPE    : 20 WIN32_SHARE_PROCESS 
    STATE    : 4 RUNNING 
          (STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN) 
    WIN32_EXIT_CODE : 0 (0x0) 
    SERVICE_EXIT_CODE : 0 (0x0) 
    CHECKPOINT   : 0x0 
    WAIT_HINT   : 0x0 

運行時我看到「State」是4。它停止時的「代碼」是什麼?

+0

''''而不是'>'會附加到現有文件。 – 2014-10-06 12:57:46

+0

謝謝,我沒有意識到這一點:-)但是我希望每次運行bat腳本時都要覆蓋文件,我想用>>會繼續填充相同的文件嗎? – user3467558567 2014-10-06 13:01:50

+0

那麼在第一個上使用'>',在其他上使用'>>'?或者在腳本的開頭刪除文件? – 2014-10-06 13:18:44

回答

1

要麼刪除任何現有的文件在啓動和使用追加模式>>

del serviceStatus.txt 2>nul 
sc machineName query eventlog >> serviceStatus.txt 
sc machineName query Wecsvc >> serviceStatus.txt 

或者使用覆蓋模式>第一個命令,附加模式對隨後的命令

sc machineName query eventlog > serviceStatus.txt 
sc machineName query Wecsvc >> serviceStatus.txt 

或包圍中的所有命令括號和重定向僅使用覆蓋模式一次

>serviceStatus.txt (
    sc machineName query eventlog 
    sc machineName query Wecsvc 
) 

或者,如果括號複雜的事情,然後把所有的輸出生成的命令在子程序與重定向CALL

call :sc >serviceStatus.txt 
exit /b 

:sc 
sc machineName query eventlog 
sc machineName query Wecsvc 
exit /b 

注意,最後兩個選項是最有效的。在你的情況下可能不是一個問題,但是如果長時間緊張循環,那麼整個循環只重定向一次,而不是循環內多次重定向會使性能發生很大變化。

+0

感謝您的所有建議。 :-) – user3467558567 2014-10-07 05:23:27

0
wmic /node:@"c:\computerlist.txt" /failfast:on Service where "name='eventlog' or name='wscsvc'" get name, pathname, state, status /format:list 

這將查詢c:\computerlist.txt中指定的服務器列表。格式如下

127.0.0.1 
MyServerA 
MyServerB 
192.168.0.1 

要生成的打開計算機上的列表鍵入以下

for /f "skip=3 delims=\" %A in ('net view ^| findstr /v /C:"The command completed successfully"') do Echo %A > C:\ComputerList.txt 

Win32_Service類在這裏https://msdn.microsoft.com/en-us/library/aa394418(v=vs.85).aspx記錄。雖然wmic內置了完整的幫助。wmic /?wmic service get /?wmic service call /?

的格式

列表類型wmic /format /?這是/format:list

Name=EventLog 
PathName=C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted 
State=Running 
Status=OK 


Name=wscsvc 
PathName=C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted 
State=Running 
Status=OK 

這是/format:csv

Node,Name,PathName,State,Status 
127.0.0.1,EventLog,C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted,Running,OK 
127.0.0.1,wscsvc,C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted,Running,OK 

還有HTML輸出選項。嘗試hform

相關問題