Powershell 比较两个目录中同名但内容不同的文件

Powershell 比较两个目录中同名但内容不同的文件,powershell,batch-file,Powershell,Batch File,我有dir1和dir2,它们有同名的子文件夹和文件。这两个文件夹都有大约1800个项目,我需要比较以找出哪些文件不同。我需要能够报告任何文件的名称,要么在一个文件中,而不是在另一个文件中,要么在两个文件中,但不同 我使用了WinMerge之类的工具,它可以在一分钟内发现它。不过,我正在尝试将此过程自动化,因此能够在powershell中或以批处理命令的形式进行此操作将是理想的选择 从powershell的角度来看,我的搜索建议拉取散列并在文件之间进行比较,这是可行的,但由于目录的大小,需要花费很

我有
dir1
dir2
,它们有同名的子文件夹和文件。这两个文件夹都有大约1800个项目,我需要比较以找出哪些文件不同。我需要能够报告任何文件的名称,要么在一个文件中,而不是在另一个文件中,要么在两个文件中,但不同

我使用了WinMerge之类的工具,它可以在一分钟内发现它。不过,我正在尝试将此过程自动化,因此能够在powershell中或以批处理命令的形式进行此操作将是理想的选择

从powershell的角度来看,我的搜索建议拉取散列并在文件之间进行比较,这是可行的,但由于目录的大小,需要花费很长时间


如果有人能帮我指引正确的方向,或者我应该如何处理这件事,我将不胜感激。

WinMerge将为您提供您所需要的一切

我知道,你只需要散列具有相同名称和大小的文件。这样可以减少一些时间。比较文件大小和时间戳可以非常快。这些不会比较内容。具有不同CreationTime、LastAccessTime或LastWriteTime的相同大小的文件不太可能相同。做散列很昂贵,但这是确定内容是否相同(或不相同)的唯一方法。我尝试通过添加更多必须相同的属性来减少结果,正如你们建议的,大小和lastWriteTime。我和我为之制作剧本的人澄清了这一点,他们说不值得花时间去抓住任何像这样的边缘案例。谢谢@ATKiwi大小是一个很好的指示器,时间戳不是,是否有一个不需要外部实用程序的bash专用解决方案?