如何读取File1.txt中单引号中的属性名称及其值,并在File2.txt中找到该属性名称和值

问题描述 投票:0回答:1

如何从

SysValidate#URL
中的单引号
'/api/sys/test'
读取属性名称(例如:
File1.txt
)及其值,并在
File2.txt
中查找该属性名称和值。

文件1.txt

Wed 11/08/2023 - 13:47:58.42 
BIP1138I: Applying overrides using runtime baroverrides...
BIP1140I: Overriding property SysValidate#URL with '/api/sys/test' in 'app_flow/META-INF/broker.xml' ...
BIP1140I: Overriding property SystValidate#Sendemail with 'TRUE' in 'app_flow/META-INF/broker.xml' ...
BIP1140I: Overriding property API_Analytics#username with 'testUser' in 'app_flow/META-INF/broker.xml' ...
BIP1140I: Overriding property API_Analytics#password with 'testPassword#' in 'app_flow/META-INF/broker.xml' ...
BIP1140I: Overriding property API_Analytics#realm with 'provider' in 'app_flow/META-INF/broker.xml' ...

一行中可以有多个单引号,但只需取第一个单引号即可。

文件2.txt

Wed 11/08/2023 - 13:47:59.43 
BIP1052I: Reading Bar file using runtime mqsireadbar...
SysValidate#URL = /api/sys/test
SystValidate#Sendemail = TRUE
API_Analytics#username = analytics
API_Analytics#password = Trustmark2021#
API_Analytics#realm = provider/default-idp-2

我正在使用以下内容,但它只是选择值,而不是属性名称。

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)
 )
)
batch-file text-files
1个回答
0
投票

这就是我会做的方式:

@echo off
setlocal EnableDelayedExpansion

rem Load property values from File2.txt
for /F "tokens=1,3" %%a in ('findstr "=" File2.txt') do set "property[%%a]=%%b"

rem Process File1.txt
for /F "tokens=4,6" %%a in ('findstr "property" File1.txt') do (
   echo Property %%a = %%b
   if defined property[%%a] (
      echo     in File2 = !property[%%a]!
   ) else (
      echo     not defined in File2
   )
)

输出:

Property SysValidate#URL = '/api/sys/test'
    in File2 = /api/sys/test
Property SystValidate#Sendemail = 'TRUE'
    in File2 = TRUE
Property API_Analytics#username = 'testUser'
    in File2 = analytics
Property API_Analytics#password = 'testPassword#'
    in File2 = Trustmark2021#
Property API_Analytics#realm = 'provider'
    in File2 = provider/default-idp-2
© www.soinside.com 2019 - 2024. All rights reserved.