0

私は Windows バッチ スクリプトを初めて使用し、テキスト ファイルから情報を抽出するのに問題があります。私のスクリプトは、不明な行数のテキスト ファイルを反復処理し、文字列 "Installer 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 で 2 つの単語とコロンを含む "Installer ID:" を検索する際に問題があり、そこから %%i を適切にサブストリング化する方法がわかりません。

4

3 に答える 3

0

user1595254が提案したように、FINDSTRを使用して必要なものを見つけ、それを一時ファイルに書き込みます。次に、varをその一時ファイルに設定します。

@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%
于 2012-12-05T14:20:22.757 に答える
0

ここでの問題は、Installer と ID を別々のコマンドとして扱っていることです。さらに、ID の後の : は、ID: をドライブとして扱っていることを意味します。これを回避するには、Installer ID: を引用符で囲みます。

たとえば、次の内容の test.txt というテキスト ファイルがあるとします。

Test
abcinstaller ID:xyz
Test 2

次に、次の方法で検索できます。

findstr "Installer ID:" test.txt

そして、次のように返します。

abcinstaller ID:xyz
于 2012-12-05T13:44:06.850 に答える
0

FOR IN() 句内に FINDSTR コマンドを配置し、結果を解析します。

次のすべての行で正しい結果が得られるように、DELIMS をコロンとスペースに設定しました。

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

*2 番目のトークン ( in )の後のすべてが必要です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"
于 2012-12-05T15:11:46.393 に答える