使用批处理脚本从txt文件中删除字符串



我有一个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!"
)

最新更新