我有一个sc查询(sc "\%inputHostName%" %operationMode% "%serviceName%" | findstr /i "SERVICE_NAME STATE" >> temp.txt
)的txt文件输出,它将生成如下输出
SERVICE_NAME: Adobeservice
STATE : 4 RUNNING
SERVICE_NAME: AppHostSvc
STATE : 4 RUNNING
然后使用分隔符":"分割文件。并将输出打印为HTML表。但是这样做会在我不想要的行中创建多个SERVICE_NAME和STATE条目。我只需要这些变量的值。如果要从sc查询中只选择这些变量的值,或者在生成输出时,请删除变量名并创建一个新的临时txt文件,如下所示
Adobeservice : RUNNING
AppHostSvc : RUNNING
使用变量跟踪每行的内容,并结合If条件修改子字符串以识别每行类型。这样做需要启用延迟扩展,并使用!expansion!
:
@echo off & CD /D "%~dp0"
Set "Lastline="
Setlocal EnableExtensions EnableDelayedExpansion
For /f "usebackq delims=" %%G in ("temp.txt")Do (
Set "Line=%%G"
If defined Lastline (
For /f "tokens=3 delims=: " %%j in ("!Line!")Do Echo(!LastLine:* =!: %%j
Set "LastLine="
) Else If "!Line:STATE=!"=="!Line!" Set "LastLine=!Line!"
)