脚本启动windows服务

脚本

@echo off&setlocal enabledelayedexpansion
 for /F "tokens=* delims= " %%i in ('sc query state^=inactive^|findstr 代理^|findstr SQL') do (    
        echo %%i
        set TMPSTR=%%i 
        ECHO !TMPSTR:~13,-1!
        echo net start  "!TMPSTR:~14,-1!"
         net start  "!TMPSTR:~14,-1!"
        )
echo 输入任意键退出.
pause>nul
('sc query state^=inactive^|findstr 代理^|findstr SQL') 这个的“代理”和“SQL” 换成你的服务名称,查询规则看后面

知识点1:赋值必选启用延迟的环境变量扩展  

@echo off&setlocal enabledelayedexpansion

如果启用延迟的环境变量扩展,则可以使用感叹号字符来替代运行时的环境变量值。!TMPSTR!

知识点2:遍历的脚本包含符号会被替换  用^    

sc query state^=inactive^|findstr 代理

知识点3:BAT批处理中的字符串处理      (参考 https://www.jb51.net/article/52744.htm)

  @echo off

  set ifo=abcdefghijklmnopqrstuvwxyz0123456789

  echo 原字符串(第二行为各字符的序号):

  echo %ifo%

  echo 123456789012345678901234567890123456

  echo 截取前5个字符:

  echo %ifo:~0,5%

  echo 截取最后5个字符:

  echo %ifo:~-5%

  echo 截取第一个到倒数第6个字符:

  echo %ifo:~0,-5%

  echo 从第4个字符开始,截取5个字符:

  echo %ifo:~3,5%

  echo 从倒数第14个字符开始,截取5个字符:

  echo %ifo:~-14,5%

  pause

知识点4:服务的处理

NET START  --当前启动的服务

--Windows服务名称与显示名称
--无论是服务名称还是显示名称,均可用于net stop\start 命令,格式如下:
net stop\start SERVICE_NAME
net stop\start "DISPLAY_NAME"
 
--查看服务名称与显示名称对应关系的方法,除了之间在services.msc里查看属性外,还可以通过sc命令查看,如
 sc query state= all|findstr "SERVICE_NAME DISPLAY_NAME"
sc query state=inactive|findstr 代理|findstr SQL--筛选服务名称与显示名称包含SQL和代理的
 

同时满足多个条件用|分割条件(交集)  sc query state=inactive|findstr 代理|findstr SQL

同时查询多个条件,用空格分割 (并集) sc query state=all|findstr "SQL Server 代理"

 服务的处理其他命令可参考:https://blog.csdn.net/it1988888/article/details/7992626?locationNum=11

原文地址:https://www.cnblogs.com/yyl001/p/15789602.html