什么是Windows等效的diff命令?

时间:2011-07-29 18:11:28

标签: windows cmd diff

我知道有一个类似的帖子:here 我尝试使用它提到的comp命令,但如果我有两个文件,一个有“abcd”等数据,另一个有数据“abcde”,它只是说文件大小不同。我想知道他们究竟有什么不同。在Unix中,简单的diff告诉我哪个行和列,如果我有“abd”和“abc”之类的东西,windows中的comp命令就可以工作。不是这样。我有什么想法可以用于此吗?

12 个答案:

答案 0 :(得分:407)

在CMD shell或批处理文件中运行:

FC file1 file2

FC也可用于比较二进制文件:

FC /B file1 file2

答案 1 :(得分:29)

好吧,在Windows上,我很高兴地运行diff和许多其他GNU工具。您可以使用cygwin执行此操作,但我个人更喜欢GnuWin32,因为它的安装体验要轻得多。

所以,我的答案是Windows等价于diff,而不是diff本身!

答案 2 :(得分:23)

Winmerge有command line utility可能值得一试。

此外,根据您的需要,您也可以使用它的图形部分。

答案 3 :(得分:14)

另一种方法是从here下载并安装git。然后,将Git\bin\的路径添加到PATH变量中。这不仅可以为您提供diff,还可以使用windows命令行中的许多其他linux命令。

您可以通过右键单击计算机并选择属性来设置PATH变量。然后,您可以单击屏幕左侧的“高级系统设置”。在弹出窗口中,单击Environment Variables,然后使用Git\bin\

在用户变量中添加或更新PATH变量

Git diff documentation

答案 4 :(得分:12)

FC效果很好,在我的情况下它没有帮助,因为我只想要改变的行。 FC提供额外的数据,如文件名,相同的行和双边比较。

    >fc data.txt data.txt.bak   
    ***** DATA.TXT
    ####09
    ####09
    ####09
    ***** DATA.TXT.BAK
    ####09
    ####08
    ####09

但在我的情况下,我只想要已更改的行,并希望将这些行导出到不同的文件,而不需要任何其他标头或数据。

所以我使用" findstr" 来比较文件:

findstr /V /G:data.txt.bak data.txt >DiffResult.txt

其中:

data.txt.bak是旧文件的名称

data.txt是新文件的名称

DiffResult.txt包含更改的数据,即只有一行#### 09

答案 5 :(得分:9)

FC。 fc处理大文件(> 4 GBytes)比Cygwin的差异更好。

答案 6 :(得分:9)

还有Powershell(Windows的一部分)。它不是很快但很灵活,这是基本的命令。如果您需要更好的格式化,人们已经为它编写了各种cmdlet和脚本。

PS C:\Users\Troll> Compare-Object (gc $file1) (gc $file2)

不属于Windows,但如果您是Visual Studio的开发人员,则会附带WinDiff(图形)

但我个人最喜欢的是BeyondCompare,售价30美元。

答案 7 :(得分:4)

DiffUtils可能是你最好的选择。这是Windows等同于差异。

据我所知,没有内置的等价物。

答案 8 :(得分:2)

您在COMP中收到错误的原因是该实用程序假定您要比较的文件大小相同。要克服这个问题,您可以使用'/n'选项,您可以使用该选项指定要比较的行数。 (通过在命令行上键入'comp /?'来查看comp支持的选项。 所以你的命令看起来像:

C:\>comp "filepath1" "filepath2" /a /l /n=(the number of lines you want to compare) /c 

如果您想坚持使用COMP,这应该可以解决您的问题。但这对于非常大的文件来说将是一个问题。

虽然comp是一个选项,但我认为它是原始的,FC是更好的选择。你可以一起使用FORFILESFC来制作一个非常好的文件比较实用程序,如果你经常需要它。

FC以这种方式用于参考:

C:\>fc /c(case insensistive) /lbn(number of errors allowed before you wanna stop compare) /n(display line number) "filename1" "filename2"

您可以通过'fc /?'查看许多选项 希望这有帮助

答案 9 :(得分:2)

我发现了一个用于Windows的轻量级图形软件,在缺少diff命令时似乎很有用。它可以解决我所有的问题。

WinDiff http://www.grigsoft.com/download-windiff.htm

答案 10 :(得分:0)

与diff命令等效的窗口是fc(File Comapre)命令。

以下是执行此操作的基本步骤:
1.将两个文件保存在一个文件夹中(例如file1.html和file2.html) 2.启动命令提示符
3.键入fc file1Location file2Location

已经找到了相同的详细教程:

http://www.howtogeek.com/206123/how-to-use-fc-file-compare-from-the-windows-command-prompt/

答案 11 :(得分:0)

如果您已在计算机上安装了git,则可以打开git终端并正常使用Linux diff命令。

相关问题