脚本
@echo off&setlocal enabledelayedexpansion for /F "tokens=* delims= " %%i in ('sc query state^=inactive^|findstr 代理') do ( echo %%i set TMPSTR=%%i ECHO !TMPSTR:~13,-1! echo net start "!TMPSTR:~14,-1!" net start "!TMPSTR:~14,-1!" ) echo 输入无效请重新输入. pause>nul
知识点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 --当前启动的服务--无论是服务名称还是显示名称,均可用于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"
--Windows服务名称与显示名称
sc query state=inactive|findstr 代理 --筛选服务名称与显示名称包含代理的
服务的处理其他命令可参考:https://blog.csdn.net/it1988888/article/details/7992626?locationNum=11