batch-file - 如何搜索特定关键字的文本文件行,并将字符串存储到该关键字的右侧

  显示原文与译文双语对照的内容

我是 Windows 批处理脚本新手,无法从文本文件中提取信息。 脚本需要用未知数量的行遍历文本文件,并搜索字符串"安装程序 ID:"。 一旦发现我需要存储在冒号右侧的任何信息。

例如如果我的文本文件如下所示:


SomeText.txt
------------------------
Installer Date: 2010_10_24_24345
OXF BUILD ID: OXF-12223
Installer ID: OTFI-316
Excel ID: 2-10186
BUILD DBID: 296414
Version: 6.2

我想存储:

 
OTFI-316

 

我已经到了这样的状态:


@echo off
setlocal EnableDelayedExpansion
set file=build_info.txt
FOR/F"tokens=*" %%i IN (%file%) DO (
findstr Installer ID: %%i
if %errorlevel%==0 (
set installer_id=SUBSTRING I
) 

但是,在搜索 %%i 时,我有两个单词和冒号的问题,从那里我不知道如何正确地子字符串字符串

时间:

将FINDSTR命令放在 IN() 子句中,并解析结果。

我将DELIMS设置为冒号和空格,以便下面的所有行都给出正确的结果:


Installer ID: OTFI-316
Installer ID:OTFI-316
Installer ID: OTFI-316

你希望在 2nd 令牌( tokens=2* 中的* ) 之后一切。


@echo off
set"file=build_info.txt"
set"installer_id="
for/f"tokens=2* delims=:" %%A in (
 'findstr/bc:"Installer ID:""%file%"'
) do set"installer_id=%%B"

这里的问题是它将安装程序和ID当作单独的命令。 更重要的是,ID ID表示它正在处理标识: 作为驱动器要绕过它,请包含安装程序 ID: 在引号中。

例如如果我有一个名为 test.txt的文本文件,它的内容如下:


Test
abcinstaller ID:xyz
Test 2

然后我可以用下面的方法搜索它:


findstr"Installer ID:" test.txt

然后它返回:

 
abcinstaller ID:xyz

 

如user1595254所建议的,我使用,定位所需的内容并将它的写入临时文件。 然后我将我的var设置为那个临时 file:


@echo off
findstr"Installer" build_info.txt> findstr_results
findstr"ID" findstr_results> installer_id
set/p installer_id= <installer_id
del findstr_results
del installer_id
echo %installer_id%

...