脚本启动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

 

posted @   乌柒柒  阅读(724)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示