在同一个txt文件中保存多个条目(Windows服务控制)

问题描述:

我试图创建一个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

要么删除任何现有的文件在启动和使用追加模式>>

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

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