这与我的两个txt文件formatliste_droid.txt和formatliste_siegfried.txt的内容相同。我想知道分隔符$:$之前的所有行是否都相同,1-1,2-2,以此类推。
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
这是我的代码:
@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
)
)
)
问题是,即使适当的行不相同,我也总是得到匹配
发布于 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"
”
https://stackoverflow.com/questions/51446181
复制相似问题