2015-03-31 41 views
0

我需要创建一个批处理文件,将执行以下操作:我有2个文本文件没有标题,我需要在一个特定的列中重复比较。批处理文件比较没有标题的文本文件重复

文件1的样子:

34551897  455684   2170865488 
34668571  455674   2165586244 
34156474  456178   2156189465 
34156184  428516   2153185687 

文件2周的模样:

3415647   458566   2183154897 
3515647   168594   2156984161 
3513157   412348   2156748416 
3581354   154613   2156789131 

我需要在第二列从文件比较1到文件2重复,如果有重复的,返回一个零。否则,返回1.

文本文件位于同一台计算机上,但位于不同的文件夹中。

任何帮助将不胜感激。提前致谢。

+0

就几个问题,澄清一些事情(我有点慢,你看到的)...是否重复需要在准确这两个文件的第二列中的相同位置?当你说'返回一个零。否则,返回一个1.'你的意思是在命令提示符窗口中输出一个'1'还是'0'?或者只是确认重复是否存在? – 2015-03-31 21:32:33

+0

[help/on-topic]:_Questions寻求作业帮助必须包括你迄今为解决问题所做的工作的总结,并描述你正在解决的难题._提示:请注意到[Windows CMD命令行的AZ索引](http://ss64.com/nt/)中的“ECHO”,“SET”,“FOR/F”,“IF”和“EXIT”命令。回到这里并且[编辑]你的问题,以寻求更多帮助以解决可能的困难。 – JosefZ 2015-03-31 22:09:31

+0

@JosefZ我已经注意到这个社区提出了很多关于帮助的问题,提交者指定了什么是必需的,但是没有证据表明这样做,或者甚至是他们可能考虑的潜在途径。我只是假设提问者要求答案,以便他们可以反向学习......或者按照比较的方式学习......就像有人说......不管我从这些问题中受益,因为我喜欢挑战并喜欢找到解决方案,但是这打破了真正的目的;提问者实际上也从我的努力中学到了东西,而不仅仅是方便地使用它作为达到目的的手段。 – 2015-04-01 00:11:11

回答

0

这可能会帮助,如果匹配的字符串的位置是无关紧要的:

@echo off 
setlocal enabledelayedexpansion 
set count=0 

for /f "usebackq tokens=2 delims=TAB " %%i in ("C:\TEST\test columns 1.txt") do (
echo %%i 
)>>C:\TEST\temp.txt 

for /f "usebackq tokens=2 delims=TAB " %%i in ("C:\TEST\test columns 2.txt") do (
findstr /c:"%%i" "C:\TEST\temp.txt" 
if !errorlevel!==0 set /a count+=1 
) 
echo !count! match(es) 
pause 
del /q "C:\TEST\temp.txt" 

您将需要与您相关的那些替换路径。此外,你还可以更有效地做到这一点通过嵌套for条件:

@echo off 
setlocal enabledelayedexpansion 
set count=0 

for /f "usebackq tokens=2 delims=TAB " %%i in ("C:\TEST\test columns 1.txt") do (
    for /f "usebackq tokens=2 delims=TAB " %%j in ("C:\TEST\test columns 2.txt") do ( 
    if %%i==%%j set /a count+=1 
    ) 
) 
echo !count! match(es) 
pause 
+0

如果我想用一个0 return退出,如果计数大于0,或出口用1,如果计数= 0它看起来是这样的: 回声%计%> 0 退出0 echo%count%== 0 exit 1 – Brandon 2015-04-02 14:42:46

+0

加入一个'if'语句,批量使用'errorlevels'参见[exit](http://ss64.com/nt/exit.html),所以你需要使用'/ b' ...并且如果您想要根据第一个终止方式运行第二个批处理,您可能需要[重定向](http://ss64.com/nt/syntax-redirection.html)命令。祝你好运! – 2015-04-02 15:54:09

+0

再次感谢@Chris – Brandon 2015-04-02 17:32:37