Batch file 批处理文件-查找服务并停止它们

Batch file 批处理文件-查找服务并停止它们,batch-file,service,Batch File,Service,这是我的密码: FOR /F "tokens=2" %%H IN ('sc query ^| find "SERVICE_NAME"') do ( SET service_name=%%H SET start_name=!service_name:~0,5! IF !start_name!.==redis. ( net stop !service_name! sc config !service_name! start= demand ) ) 这个很好用。它找到

这是我的密码:

FOR /F "tokens=2" %%H IN ('sc query ^| find "SERVICE_NAME"') do (
  SET service_name=%%H
  SET start_name=!service_name:~0,5!
  IF !start_name!.==redis. (
    net stop !service_name!
    sc config !service_name! start= demand
  )
)
这个很好用。它找到所有以“redis”开头的服务,停止它们,然后将它们的启动类型更改为手动

但是,如果我将
sc-query
更改为
sc-query-state=all
,它就不再工作了,我会收到一个错误,说服务不存在。。。但是,该命令在提示窗口中工作

我希望使用
state=all
的原因是更改找到的服务的启动类型,即使这些服务当前未运行(如果未运行,它们不会显示在
sc query
命令中)


我做错什么了吗?

登录
状态=all
需要转义,因为它位于
FOR
循环的内部

FOR /F "tokens=2" %%H IN ('sc query state^= all ^| find "SERVICE_NAME"') do (
  SET service_name=%%H
  SET start_name=!service_name:~0,5!
  IF !start_name!.==redis. (
    net stop !service_name!
    sc config !service_name! start= demand
  )
)

我知道有件很简单的事我不知道。谢谢:)