首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何批量比较两个文件的文本行

如何批量比较两个文件的文本行
EN

Stack Overflow用户
提问于 2018-07-20 23:47:19
回答 1查看 410关注 0票数 0

这与我的两个txt文件formatliste_droid.txt和formatliste_siegfried.txt的内容相同。我想知道分隔符$:$之前的所有行是否都相同,1-1,2-2,以此类推。

代码语言:javascript
运行
复制
Z:\15_Testdateien\jhove_Script_fuer_MIX-Verzeichnisse\testfiles\BVBBV042064787\Files\E\images.jpg$;$fmt/43
Z:\15_Testdateien\jhove_Script_fuer_MIX-Verzeichnisse\testfiles\BVBBV042064787\Files\E\Van Schijndel House - English.mp4$;$fmt/199
Z:\15_Testdateien\jhove_Script_fuer_MIX-Verzeichnisse\testfiles\BVBBV042064787\Files\E\Van Schijndelhuis - Nederlands.mp4$;$fmt/199

这是我的代码:

代码语言:javascript
运行
复制
@echo off
Setlocal EnableDelayedExpansion 
for /f "tokens=1 delims=$;$" %%a in (formatliste_siegfried.txt) do ( 
for /f "tokens=1 delims=$;$" %%c in (formatliste_droid.txt) do (                                      
if /i  %%a==%%c (
echo  match
pause
)

)
)

问题是,即使适当的行不相同,我也总是得到匹配

EN

回答 1

Stack Overflow用户

发布于 2019-04-01 23:08:40

TL;DR -

使用fc.exe命令。

详细信息-

这个逻辑有几个问题会阻止你得到你想要的输出。输出只得到“匹配”的原因是因为这是唯一可能的输出--只有一个"echo“行。添加大小写else将输出一行不匹配的次数。

也就是说,添加else的噪音太大,没有价值,因为大多数输出将是“不匹配的”。这里的逻辑是“对于文件1的每一行,检查文件2的每一行以检查是否匹配”。例如:给定两个文件,每个文件有100行,即使每行在另一个文件中都有匹配,对于100个外部循环中的每个,输出将是1“匹配”和99“不匹配”。我假设你不想要100“匹配”和9900“不匹配”。

因此,考虑到“如何比较两个文件中的文本行”这一问题,我建议使用FC.exe命令。无论是批处理还是普通命令行,它都是为比较文件而设计的。

其他需要考虑的事项:

  • 缺少包含空格的比较项两边的双引号

%%a==%%c ...应该是..."%%a"=="%%c"

  • "delims=“可以匹配几乎任何单个字符,但从不需要连续的多字符group

  • "Setlocal EnableDelayedExpansion”不需要“

  • “如果大小写很重要,则使用"if /i”将破坏

  • 的完整性
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51446181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档