通过命令行进行文件夹比较

时间:2009-11-14 00:56:28

标签: windows cmd comparison directory

我想比较Windows(Vista,XP)上有两个文件夹,它们有大量的大文件,我需要对它们进行比较。如果我使用Beyond Compare或这样的工具来比较文件夹,那么如果我手动执行它会花费很多时间。我需要将该文件夹比较添加到批处理文件。

所以在Windows(XP,Vista)上,是否有任何命令(内置)或任何第三方工具/实用程序(商业或免费软件 - 或者)使用命令行比较两个文件夹。

6 个答案:

答案 0 :(得分:12)

>diff -r Folder_A Folder_B

您可以在GnuWin32找到为Windows编译的GNU diffutil。

答案 1 :(得分:7)

您可以使用内置命令COMP。这取决于你实际想要比较的内容。

  

比较两个文件的内容或   文件集。

     

COMP [data1] [data2] [/ D] [/ A] [/ L]   [/ N =数字] [/ C]

     

data1指定位置和   要比较的第一个文件的名称。

     

data2指定位置和   要比较的第二个文件的名称。

     

/ D显示差异   十进制格式。

     

/ A显示   ASCII字符的差异。

     

/ L   显示差异的行号。

     

/ N = number仅比较第一个   每个指定的行数   文件。

     

/ C无视案例   比较文件时的ASCII字母。

     

要比较文件集,请在data1和data2参数中使用通配符。

使用COMP c:\folder1 c:\folder2之类的语法将folder1中的所有文件与folder2的内容进行比较。如果需要递归到子目录,则需要使用FOR循环和PUSHDPOPD命令来使用批处理脚本。

如果您需要帮助,请发表评论。

答案 2 :(得分:3)

我使用Cygwin版本的Unix命令行工具:

diff -r dir1 dir2

我过去也使用过MinGW。两者都有一些陷阱,但“足够接近”。对于视觉差异,我非常喜欢WinMerge

答案 3 :(得分:2)

forfiles /P %folder1Path% /S /C "cmd /c comp /a @path %folder2Path%\@file"

可行,但在第一次比较后我无法删除提示问题。

答案 4 :(得分:0)

基于我接下来写的马丁·图尔诺伊(Martin Tournoij)的答案(它很好地工作了):

del a.txt
forfiles /P %1 /M *.c* /S /C "cmd /c comp /a @path @file /M" >> a.txt
forfiles /P %1 /M *.h /S /C "cmd /c comp /a @path @file /M" >> a.txt
forfiles /P %1 /M *.s /S /C "cmd /c comp /a @path @file /M" >> a.txt

它看起来在子目录中,不询问任何问题...

答案 5 :(得分:-1)

我的两个目录具有相同的结构,只对文件进行了一些版本更改。此外,我的目录只是一个python文件的文件夹。所以我逃脱了...

$ cat dir1/*.py > file1.txt 
$ cat dir2/*.py > file2.txt
$ diff file1 file2