在同一个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。它停止时的“代码”是什么?
要么删除任何现有的文件在启动和使用追加模式>>
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
注意,最后两个选项是最有效的。在你的情况下可能不是一个问题,但是如果长时间紧张循环,那么整个循环只重定向一次,而不是循环内多次重定向会使性能发生很大变化。
感谢您的所有建议。 :-) – 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
。
''''而不是'>'会附加到现有文件。 – 2014-10-06 12:57:46
谢谢,我没有意识到这一点:-)但是我希望每次运行bat脚本时都要覆盖文件,我想用>>会继续填充相同的文件吗? – user3467558567 2014-10-06 13:01:50
那么在第一个上使用'>',在其他上使用'>>'?或者在脚本的开头删除文件? – 2014-10-06 13:18:44