脚本启动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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~