Joe*_*oey 19
你不能在DOS中这样做,因为DOS不是Windows,甚至没有"服务"的概念.
在Windows批处理文件中,您可以使用该sc命令查找服务:
sc query | findstr SERVICE_NAME
Run Code Online (Sandbox Code Playgroud)
这将枚举所有服务并产生各自的名称.
您可以使用搜索特定服务
sc query | findstr /C:"SERVICE_NAME: myservice"
Run Code Online (Sandbox Code Playgroud)
请记住,此搜索区分大小写.您可以添加/I开关findstr以避免这种情况.
ica*_*bod 12
在我的脑海中,您可以检查特定服务是否正在运行,如bmargulies所述,使用"net"命令,将结果输入"find".以下内容将检查服务是否正在运行,如果是,则停止它.然后你可以启动它而不用担心它是否已经运行:
net start | find "SomeService"
if ERRORLEVEL 1 net stop "SomeService"
net start "SomeService"
Run Code Online (Sandbox Code Playgroud)
如果您正在使用findstr进行搜索,正如其他一些答案所建议的那样,那么您将检查ERRORLEVEL是否等于0(零)...如果是,那么您找到了您正在寻找的字符串:
net start | findstr "SomeService"
if ERRORLEVEL 0 net stop "SomeService"
net start "SomeService"
Run Code Online (Sandbox Code Playgroud)
基本上大多数DOS命令都会设置ERRORLEVEL,允许您检查像find这样的东西是否成功.
只是接受答案的补遗.如果您希望执行其他操作,而不仅仅是重新启动服务,并且正在查看是否已安装该服务.
sc query state= all | findstr /C:"SERVICE_NAME: MyService"
if ERRORLEVEL 0 (**My Operation**)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,state = all很重要,因为如果服务没有启动,它将被解释为未安装,这是两个单独的事情.
| 归档时间: |
|
| 查看次数: |
26587 次 |
| 最近记录: |