如何使用“sc start”或“net start”在名称与模式匹配的服务上创建一行命令?

如何使用“sc start”或“net start”在名称与模式匹配的服务上创建一行命令?

我正在创建一个批处理文件来启动多个服务,而不是用确切的服务名称枚举每个“net start”,我如何创建脚本来在任何以“EED”开头的服务上运行“net start”

谢谢。

答案1

如果您愿意使用 PowerShell 而不是批处理文件,那么这一行代码就可以解决您的问题。

Get-Service EED* | Start-Service

答案2

FOR-IN-DO 循环是实现此目的的一种方法。

FOR %%x in ("Service 1" "Service 2" "Service ...") DO net start %%x

语法可能有所不同,具体取决于服务名称和可选参数。当然,这不能满足您根据以“EED”开头的服务名称枚举列表的要求。您必须具体列出每项服务,或使用更复杂的代码来完成此操作。FOR /?在命令提示符下键入以获取有关此命令提供的广泛选项的更多信息。

答案3

下面是一个可以完成这一任务的批处理文件:

@Echo Off
for /f "tokens=1,2" %%i in ('sc query') do if "%%i"=="SERVICE_NAME:" call :Process %%j
Goto :EOF

:Process
set @Name=%1
if "%@Name:~0,3%"=="EED" (SC start %1
Echo %1 Started)

:EOF

如果您想更改“前缀搜索”,请更改以下行:

if "%@Name:~0,3%"=="EED" (SC start %1

要搜索的前缀是“EED”,您必须确保更改长度数字,即“~0,3”部分...如果您想要所有以“Exchange”开头的服务,则将该数字更改为“~0,8”

高血压,

格伦

相关内容