如何从File1.txt提取属性名与单引号值并在File2.txt中匹配
问题与解决方案
需求说明
需要从File1.txt中读取属性名(例如SysValidate#URL)及单引号包裹的对应值(例如'/api/sys/test',一行多组单引号仅取第一组),并在File2.txt中验证该属性名与值的匹配情况。现有Windows批处理脚本仅能提取值,无法获取属性名,需修改脚本实现完整功能。
原脚本(仅能提取值)
SETLOCAL ENABLEDELAYEDEXPANSION FOR /f "usebackqdelims=" %%e IN ("C:\Users\k2\File1.txt") DO FOR %%y IN (%%e) DO ( SET "word=%%y" IF "!word:~0,1!!word:~-1!"=="''" ( ECHO Processing %%y FIND "!word:~1,-2!" "C:\Users\k2\File2.txt">nul IF ERRORLEVEL 1 (>>"C:\Users\k2\Results.txt" ECHO %%y - Failed) ELSE (>>"C:\Users\k2\Results.txt" ECHO %%y - Success) ) )
修改后的完整脚本
@echo off SETLOCAL ENABLEDELAYEDEXPANSION :: 清空结果文件 echo. > "C:\Users\k2\Results.txt" FOR /f "usebackq delims=" %%e IN ("C:\Users\k2\File1.txt") DO ( :: 仅处理属性覆盖记录行 echo "%%e" | findstr /C:"BIP1140I: Overriding property" >nul if not errorlevel 1 ( :: 提取属性名(行内第4个字段) for /f "tokens=4" %%p in ("%%e") do set "propName=%%p" :: 提取第一个单引号包裹的值 set "line=%%e" set "value=" set "inQuote=" for /l %%i in (0,1,1000) do ( if "!line:~%%i,1!"=="'" ( if not defined inQuote ( set "inQuote=1" ) else ( set "inQuote=" goto :extractDone ) ) else if defined inQuote ( set "value=!value!!line:~%%i,1!" ) ) :extractDone if defined value ( echo 正在处理 !propName! = !value! :: 精确匹配属性名+值的完整行 findstr /C:"!propName! = !value!" "C:\Users\k2\File2.txt" >nul if errorlevel 1 ( >>"C:\Users\k2\Results.txt" echo !propName! - 值不匹配(预期:!value!)- Failed ) else ( >>"C:\Users\k2\Results.txt" echo !propName! - 值匹配 - Success ) ) ) ) ENDLOCAL
脚本关键逻辑说明
- 过滤目标行:只处理包含
BIP1140I: Overriding property的行,跳过无关日志内容 - 提取属性名:利用
tokens=4分割行内容,直接获取第4个字段(即属性名) - 提取目标值:通过遍历行内字符,识别第一个单引号的起止位置,提取内部内容,确保只取第一组单引号的值
- 精确匹配验证:使用
findstr /C:进行完整字符串匹配,确保属性名 = 值的组合在File2.txt中完全存在 - 结果输出:将匹配状态(成功/失败)及预期值写入结果文件,便于查看
测试结果示例
根据提供的File1.txt和File2.txt,运行脚本后Results.txt内容如下:
SysValidate#URL - 值匹配 - Success SystValidate#Sendemail - 值匹配 - Success API_Analytics#username - 值不匹配(预期:testUser)- Failed API_Analytics#password - 值不匹配(预期:testPassword#)- Failed API_Analytics#realm - 值不匹配(预期:provider)- Failed
内容的提问来源于stack exchange,提问作者Chris_dev
相关产品推荐
相关产品推荐

