那是我的2个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
)
)
)
问题是,即使适当的行不相同,我也总是会匹配
答案 0 :(得分:0)
使用fc.exe
命令。
此逻辑存在一些问题,使您无法获取所需的输出。您只获得输出“匹配”的原因是因为这是唯一可能的输出-只有一行“回声”。添加案例else
将输出一行不匹配的次数。
那就是说,添加else
太嘈杂了,以至于没有价值,因为绝大多数输出都是“不匹配”的。这里的逻辑说:“对于文件1的每一行,检查文件2的每一行以检查是否匹配”。例如:给定2个文件,每个文件有100行,即使每行在另一个文件中都有匹配项,对于100个外部循环中的每个循环,输出将为1个“匹配”和99个“不匹配”。我假设您不希望100个“匹配”和9900个“不匹配”。
因此,仍然考虑问题是“如何比较两个文件中的文本行”,我建议使用FC.exe
命令。无论是批处理命令行还是普通命令行,它都旨在比较文件。
在包含空格的比较项周围缺少双引号
%%a==%%c
...应该是... "%%a"=="%%c"
“ delims =”几乎可以匹配任何单个字符,但不能匹配连续的多字符组