使用batch脚本处理sc query输出txt文件 提取服务名与运行状态
Windows sc查询结果提取解决方案
方案1:修改查询命令直接输出目标格式
无需后续二次处理,直接在查询时提取服务名和运行状态,导出对应格式的文件:
@echo off & setlocal enabledelayedexpansion del result.txt /f /q >nul 2>&1 for /f "tokens=2 delims=:" %%a in ('sc "\\%inputHostName%" %operationMode% "%serviceName%" ^| findstr /i "SERVICE_NAME STATE"') do ( rem 去除字段首尾空格 for /f "tokens=* delims= " %%c in ("%%a") do set "str=%%c" if not defined sname ( rem 第一个匹配字段为服务名 set "sname=!str!" ) else ( rem 第二个匹配字段提取运行状态,跳过状态码 for /f "tokens=2" %%b in ("!str!") do echo !sname! : %%b >> result.txt set "sname=" ) ) endlocal
执行后生成的result.txt即为你需要的服务名 : 运行状态格式内容。
方案2:对已生成的temp.txt做格式转换
如果已经生成了原始输出的temp.txt,可通过以下命令转换得到目标文件:
@echo off & setlocal enabledelayedexpansion del new_temp.txt /f /q >nul 2>&1 for /f "tokens=2 delims=:" %%a in (temp.txt) do ( for /f "tokens=* delims= " %%c in ("%%a") do set "str=%%c" if not defined sname ( set "sname=!str!" ) else ( for /f "tokens=2" %%b in ("!str!") do echo !sname! : %%b >> new_temp.txt set "sname=" ) ) endlocal
转换后得到的new_temp.txt可直接按":"分隔生成HTML表格。
内容的提问来源于stack exchange,提问作者Amit Gope
相关产品推荐
相关产品推荐

