带服务的通配符 Stop/Start

Wildcard with Service Stop/Start

我知道我们可以在 VBS、PowerShell 等中执行此操作。但是,除了良好的批处理脚本之外,我们不想使用其他语言执行此操作。

弄清楚了以下几点:

TASKKILL /F /IM "tomcat*"

这将强制 kill/stop Tomcat 的任何持久实例。此外,这将涵盖 Tomcat6.exe、Tomcat6_1.exe、tomcat7.exe 等。

我的问题是..我们知道我们可以做一个 NET START Tomcat6,例如..是否有可能:

NET START Tomcat*

? 是的,我完全知道如果您在服务器上有多个 Tomcat 实例,这将失败,因为您必须遍历实例列表。但是,我正在考虑这样做的原因是,我有我们必须 运行 的每月脚本,我正在努力使批处理脚本更便携。

谢谢。

@echo off
set "service=tomcat"
for /f "tokens=2 delims=: " %%# in ('sc query type^= service^|find /i "SERVICE_NAME:"^|findstr /i /b /c:"SERVICE_NAME: %service%"') do (
    set "nservice=%%#"
)
echo %nservice%
net start %nservice%

这个?

您可以使用带通配符的 WMIC 命令来完成此操作:

wmic service where "name like 'tomcat%'" call stopservice

请参阅超级用户网站上的 Wildcard Services restart