什么是Windows等效的diff命令?

wit*_*tha 268 windows diff cmd

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

And*_*y M 436

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

FC file1 file2
Run Code Online (Sandbox Code Playgroud)

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

FC /B file1 file2
Run Code Online (Sandbox Code Playgroud)

  • @ Wolfpack'08":`FC path1\*FC path2\*`将比较文件夹`path1`和`path2`中的所有文件,只要它们(文件)具有相同的名称.如果有不匹配名称的文件, FC会报告丢失的文件,但仅报告第一个文件夹的文件,这些文件在第二个文件夹中找不到,而不是相反.为了捕获所有不匹配,可能需要使用不同的技术. (15认同)
  • 如何使用两个文件夹中的所有已更改文件执行此操作?比如,我将folder1的内容与folder2的内容进行比较:folder2中的任何更改的行都显示出来了吗? (2认同)
  • 我必须在 Windows 10 powershell 上执行“fc.exe f1 f2”。请注意添加了“.exe”。 (2认同)

Dav*_*nan 32

好吧,在Windows上我很高兴运行diff和许多其他GNU工具.你可以用cygwin来做,但我个人更喜欢GnuWin32,因为它的安装体验要轻得多.

所以,我的答案是Windows相当于diff,diff本身就是其中之一!

  • 我不推荐cygwin.我使用diff的本机Win32端口 (7认同)
  • 现在,有了 Windows Subsystem for Linux(WSL,又名 Bash for Windows),如果在 Windows 10 上,获取和使用 diff 会更加容易 (2认同)

Rob*_*ner 23

Winmerge有一个命令行实用程序可能值得一试.

此外,您还可以根据需要使用图形部分.

  • 虽然这不是一个内置的Windows实用程序,但我强烈推荐它 - 它是开源的,重量轻的,并且根据我的经验无错误. (2认同)

Tim*_*son 16

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

您可以PATH通过右键单击"计算机"并选择"属性" 来设置变量.然后,您可以单击屏幕左侧的"高级系统设置".在弹出窗口中,单击Environment Variables,然后在用户变量中添加或更新PATH变量Git\bin\

Git diff文档

  • @Tim Hutchison,来自您的回答:“这不仅会为您提供差异,还会为您提供许多其他可以从 Windows 命令行使用的 linux 命令。” - 你是指哪些?当一个人安装 Git 时,他/她应该只有 PATH 中可用的 `git...` 可执行文件。此外,答案可能应该包括一条重要信息:您需要通过编写“git diff”来启动 diff 工具,而不仅仅是“diff”。 (3认同)
  • @BKSpurgeon - 如果右键单击"计算机"并选择"属性",则可以单击屏幕左侧的"高级系统设置".在弹出窗口中,单击Environment Variables,然后使用Git\bin \在用户变量中添加或更新PATH变量 (2认同)

Nim*_*ary 13

FC在我的情况下工作得很好它没有用,因为我只想要改变的行.FC提供额外的数据,如文件名,相同的行和双边比较.

    >fc data.txt data.txt.bak   
    ***** DATA.TXT
    ####09
    ####09
    ####09
    ***** DATA.TXT.BAK
    ####09
    ####08
    ####09
Run Code Online (Sandbox Code Playgroud)

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

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

findstr /V /G:data.txt.bak data.txt >DiffResult.txt
Run Code Online (Sandbox Code Playgroud)

其中:

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

data.txt 是新文件的名称

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


Pau*_*ams 10

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

PS C:\Users\Troll> Compare-Object (gc $file1) (gc $file2)
Run Code Online (Sandbox Code Playgroud)

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

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


ner*_*com 9

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