2013-03-08 63 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