如何知道.exe文件的名称,在cmd中停止服务?

时间:2014-04-08 10:42:06

标签: windows batch-file service cmd

我需要在不知道服务名称的情况下停止批处理文件中的Windows服务。我唯一知道的是,运行的文件名为SomeServer.exe,但SC命令需要服务的实际名称。 目前我必须扫描一个配置文件并执行丑陋的字符串操作,但我希望有一个更聪明的方法。 有什么建议吗?

2 个答案:

答案 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