1

私はこのタイプのファイルtxtを持っています:

007   87855
008   87823
015   87830

2 つの列はタブで区切られています

私はこれをしたい:

read each line of input.txt
if %%test == first_column_value_file
then assign %%second_column_value_file to %%var

"test" for example is 008.

%%a が最初の列の値と一致すると、ファイルの読み取りを停止できます。バッチでそれを行うことは可能ですか?

4

2 に答える 2

1

列がタブで区切られているのは残念です。それらがスペースで区切られている場合、これは機能します...(コマンドラインから直接(バッチファイルは必要ありません)

for /f "tokens=1,2 delims= "  %a in (input.txt) do if %a==008 set result=%b

%result% をエコーすると、最初のトークンとして 008 に一致する行の 2 番目のトークンの内容が表示されます。

このバージョンは、バッチ スクリプトで使用でき、区切り文字がタブであるという問題を修正します (あまり正確でない/明示的でないことを学ばなければなりません)。

set result=
for /f "tokens=1,2"  %%a in (input.txt) do if %%a==008 set result=%%b

echo Result is %result%
于 2013-03-08T20:51:10.907 に答える
1

@reneの答えのモックバージョンを使用してこれを考え出しました(reneの答えも同様に機能しません)...

@echo off
set test=002
for /f "tokens=1,2" %%a in (test.txt) do if %%a==%test% set var=%%b & goto end
:end
set test
set var
pause>nul

の内容test.txt:

001 00001
002 00002
003 00003

コードの出力:

test=002
var=00002
于 2013-03-08T23:17:05.750 に答える