我给自己写一个批处理文件的一个简单的任务,将做以下对比文件:批:使用CRC32
比较每个文件的CRC32在“第一”文件夹中的“第二”文件夹中的每个文件。输出需要是“第一个”文件夹中每个文件的名称,该文件夹在“秒”中没有重复。
注意:“CRC32.exe -nf”在第一行输出CRC32,在第二行输出CRC32。
这里是我试图做到这一点:
@echo off
for %%i in ("%cd%\first\*.*") do (
set uniq=0
for /f %%x in ('crc32 %%i -nf') do (
set one=%%x
goto find_two
)
:find_two
for %%j in ("%cd%\second\*.*") do (
for /f %%x in ('crc32 %%j -nf') do (
set two=%%x
goto compare
)
:compare
if one==two (
goto next
) else (
set uniq=1
)
)
if uniq==1 (
echo %%i >>result.txt
)
:next
)
我认为不存在这个代码的几个错误,但我已经很难找到他们。所以如果有人有时间,并且认为他能帮忙,我会很感激。
如果您认为需要采用不同的方法,请随时展示。
我使用'goto'的唯一原因是因为在C++中没有'break',但我不知道它不仅会打破嵌套循环,而且会破坏所有循环。我已根据您的指示修改了脚本,现在它看起来像这样:[link](http://pastebin.com/raw.php?i=efbhNmV7)。但我仍然得到与以前一样的错误:“_)此时不是预期的。” – eqagunn
删除括号中的所有标签,应解决此问题 – jeb
感谢您的帮助jeb。感谢你,我意识到,摆脱嵌套循环是主要问题,我搜索并发现如何去做。这就是代码现在的样子,它的工作原理如下:[link](http://pastebin.com/raw.php?i=a1Bsm1TK) – eqagunn