我需要在不知道服务名称的情况下停止批处理文件中的Windows服务。我唯一知道的是,运行的文件名为SomeServer.exe,但SC命令需要服务的实际名称。 目前我必须扫描一个配置文件并执行丑陋的字符串操作,但我希望有一个更聪明的方法。 有什么建议吗?
答案 0 :(得分:2)
for /f "tokens=2 delims=," %%a in (
'wmic service get name^,pathname^,state /format:csv ^| findstr /i /r /c:"SomeServer\.exe.*Running$"'
) do sc stop "%%a"
它以csv格式检索系统名称,服务名称,路径名称和服务状态。列表将在运行状态下过滤所需的可执行文件名,使用逗号作为分隔符进行拆分,第二个字段(服务名称)用于停止服务
答案 1 :(得分:0)
这可能会有所帮助 http://richarddingwall.name/2009/06/18/windows-equivalents-of-ps-and-kill-commands/
如果你曾经使用过Unix,那么毫无疑问你会对它有所了解 命令ps和kill。在Windows上,图形任务管理器执行 这些角色很好,但如果你发现自己需要 求助于命令行杀死一个进程(例如由于某些原因) 我正在任务管理器上写这个Vista的机器只是坐在 系统托盘闪烁而不是打开),Windows的等价物 ps和kill是tasklist和taskkill:
tasklist /v - equivalent to ps aux
taskkill /f /im ncover* - equivalent to kill -9 ncover*
还有pslist http://technet.microsoft.com/en-us/sysinternals/bb896682.aspx
编辑: 对于服务使用psservice http://technet.microsoft.com/en-us/sysinternals/bb897542.aspx
或使用此处描述的方法(使用注册表)https://stackoverflow.com/a/298823/1342402