如何仅使用服务名称的一部分在 cmd 中停止/启动 Windows 服务。示例:
NET STOP *part_of_name_of_service*
NET START *part_of_name_of_service*
例如。mysql有多个版本的“服务名称”。
MySQL57
wampmysqld
etc, etc, etc
这个想法是停止/启动任何包含单词“mysql”的服务。类似这样的:
net start *MySQL*
但不幸的是,我的尝试产生了错误:“服务名称无效”。
尝试:
1.使用以下命令将服务名称转储到文件中:
REG QUERY "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services" > services.txt
findstr /i /r "mysql" services.txt
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MySQL
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\wampmysqld64
但我无法完成循环
2.使用taskkill
call :winservices "*mysql*"
:: funcion winservices
@echo off
goto:eof
:winservices
set winservices=%1
taskkill /f /im "%winservices%" /t
goto:eof
但"*mysql*"
不起作用(仅"mysql*"
起作用)
尝试删除服务时也会发生同样的情况:
sc delete *MySQL*
我该怎么做呢?
答案1
使用 PowerShell 非常简单:
Stop-Service *mysql*
Start-Service
并且Remove-Service
工作相同,后者仅从 PowerShell 6 开始可用。
答案2
找到了解决方案这里(仅适用于终止服务)
taskkill /FI "IMAGENAME eq httpd*" /T /F
taskkill /FI "IMAGENAME eq mysql*" /T /F