【问题标题】:Folder Comparisons Via Command Line通过命令行进行文件夹比较
【发布时间】:2010-12-16 12:18:02
【问题描述】:

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

因此,在 Windows(XP、Vista)上,是否有任何命令(内置)或任何 3rd 方工具/实用程序(商业或免费软件 - 任一种)使用命令行比较两个文件夹。

【问题讨论】:

    标签: windows cmd comparison directory


    【解决方案1】:
    >diff -r 文件夹_A 文件夹_B

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

    【讨论】:

    【解决方案2】:

    您可以使用内置命令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 命令。

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

    【讨论】:

    • 如何使用这个COMP 递归两个文件夹。我试过这样COMP C:\folder1\* C:\folder2\*,但这不会返回所有文件。
    【解决方案3】:

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

    diff -r dir1 dir2
    

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

    【讨论】:

      【解决方案4】:
      forfiles /P %folder1Path% /S /C "cmd /c comp /a @path %folder2Path%\@file"
      

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

      【讨论】:

      • 不会工作,因为 @file 不会转到文件夹 1 的子目录
      【解决方案5】:

      基于我接下来写的 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
      

      它在子目录中查找并且不询问任何问题...

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

        • 1)这是一个Windows问题,2)你可以使用diff -r,不需要cat
        猜你喜欢
        • 1970-01-01
        • 2023-03-26
        • 2015-04-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-24
        相关资源
        最近更新 更多