2013-03-08 62 views
1

每一行我有這種類型的文件txt爲:批量讀取文件

007 87855 
008 87823 
015 87830 

兩列由tab分

我想這樣做:

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. 

時我的%%與第一列的值匹配,我可以停下來閱讀文件。 是否有可能成批處理?

回答

1

這是太糟糕了,列被分隔標籤。如果他們在那裏有一個空格隔開這會工作...(直接在命令行(所以沒有批處理文件需要)

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

如果你回聲%的結果%你看到第二個令牌的contect就行匹配008作爲第一個標記。

這個版本可以在批處理腳本中使用和可修復delimter是一個選項卡(我要學會不那麼精確的/顯式)的問題。

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

echo Result is %result% 
+0

豈不如果delims選項被排除在外工作的呢? – 2013-03-08 22:27:31

+0

如何獲得%b?我的意思是,以自動方式將第一列和第二列批量插入到%a和%b中? – rschirin 2013-03-08 22:46:51

+0

根據意見修復 – rene 2013-03-09 09:10:40

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 
+0

這句話應該是'注意雷內的答案也會工作。 – 2013-03-08 23:17:44

+0

在我的命令行版本中,我也做了&goto:eof以早日脫身。這隻能在一個命令腳本中起作用。 +1 – rene 2013-03-09 09:14:32

+0

@rene它回答你的問題,或只是幫助你?如果它沒有回答,我該如何做得更好? – 2013-03-09 09:50:11