Windows 7 使用命令提示符进行文件比较
我想使用命令提示符比较两个文本文件,我正在使用两个名为abc和xyz的文本文件。我需要其他文本文件中的唯一记录。但我得到的一些字符串的输出将进入第二行,这将我的URL分成两行,有没有任何方法可以比较它们,并以与现有文本文件相同的格式得到输出Windows 7 使用命令提示符进行文件比较,windows-7,cmd,Windows 7,Cmd,我想使用命令提示符比较两个文本文件,我正在使用两个名为abc和xyz的文本文件。我需要其他文本文件中的唯一记录。但我得到的一些字符串的输出将进入第二行,这将我的URL分成两行,有没有任何方法可以比较它们,并以与现有文本文件相同的格式得到输出 fc abc.txt xyz.txt > unique.txt abc文件包含如下数据 newsroom.associatedbank.com/News-Releases/Associated-Bank-opens-new-Minocqua-bran
fc abc.txt xyz.txt > unique.txt
abc文件包含如下数据
newsroom.associatedbank.com/News-Releases/Associated-Bank-opens-new-Minocqua-branch-5e1.aspx
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=75
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=76
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=202
newsroom.associatedbank.com/News-Releases/Associated-Bank-finances-12M-for-retail-and-residential-projects-5dc.aspx
newsroom.associatedbank.com/News-Releases/Associated-Banc-Corp-completes-purchase-of-risk-and-benefits-consulting-firm-Ahmann-Martin-Co-5db.aspx
newsroom.associatedbank.com/News-Releases/Associated-opens-new-Rochester-branch-5da.aspx
newsroom.associatedbank.com/News-Releases/Associated-Bank-opens-new-Minocqua-branch-5e1.aspx
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=75
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=76
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=202
newsroom.associatedbank.com/News-Releases/Associated-opens-new-Rochester-branch-5da.aspx
xyz文件包含如下数据
newsroom.associatedbank.com/News-Releases/Associated-Bank-opens-new-Minocqua-branch-5e1.aspx
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=75
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=76
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=202
newsroom.associatedbank.com/News-Releases/Associated-Bank-finances-12M-for-retail-and-residential-projects-5dc.aspx
newsroom.associatedbank.com/News-Releases/Associated-Banc-Corp-completes-purchase-of-risk-and-benefits-consulting-firm-Ahmann-Martin-Co-5db.aspx
newsroom.associatedbank.com/News-Releases/Associated-opens-new-Rochester-branch-5da.aspx
newsroom.associatedbank.com/News-Releases/Associated-Bank-opens-new-Minocqua-branch-5e1.aspx
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=75
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=76
newsroom.associatedbank.com/content/default.aspx?NewsAreaId=2&SubjectId=202
newsroom.associatedbank.com/News-Releases/Associated-opens-new-Rochester-branch-5da.aspx
如果您有
Windows 7
,则不必下载Windows PowerShell 2.0
,因为它已经安装
从cmd.exe
命令行:
powershell Compare-Object -ReferenceObject (Get-Content abc.txt) -DifferenceObject (Get-Content xyz.txt) –IncludeEqual ^| Out-File -FilePath unique.txt -Width 4096
注:
- 删除
(仅为辣味添加)李>–IncludeEqual
- 请注意,
管道被转义以将其传递给PowerShell,而不是在|
中处理它李>cmd
- 将宽度4096更改为所需的输出线长度(整数范围)。任何附加字符都将被截断,而不是包装。如果忽略此参数,则宽度由主体的特征决定。Windows PowerShell控制台的默认值为80(个字符)李>
- 这里有一个巨大的链接(通过PowerShell提供的过滤器到文件操作的链接)李>
- 这里有一个参考资料
SideIndicator
输出格式,请省略^ | Out File…
,如下所示。您应该在屏幕上得到截断的输出
powershell Compare-Object -ReferenceObject (Get-Content abc.txt) -DifferenceObject (Get-Content xyz.txt) –IncludeEqual
使用或省略PowerShell语句的可选部分,下一个命令应给出相同的结果:
powershell diff (type abc.txt) (gc xyz.txt) -includeequal
“但是我得到的一些字符串的输出将转到第二行,这将我的URL分成两行”
fc
在一行包含超过127个字符时存在错误
它已被Windows XP和Windows Vista热修复,但不适用于Windows 7
它在Windows 7中无法正常工作(使用32位或64位fc.exe
)
当命令比较包含任何ASCII或UNICODE记录的文件时,该记录中的字符数超过127个
来源 我创建了两个测试文件xxx.txt和yyy.txt,它们在第nnn行不同,但fc/n报告它们在第nnn+1行不同。fc似乎已将前一行的一个拆分为两行。使用十六进制编辑器检查文件时,在fc拆分行的位置没有显示任何行尾字符0D或0A的痕迹。对于较大的文件,fc报告的不匹配位置与发生不匹配的实际行严重不同步。 这是fc中已知的错误吗?该程序中此类已知问题的公开列表在哪里
有针对Windows XP和Windows Vista的热修复程序。我看不到适用于Windows7的 项目ID:953930-如果要比较的两个文件在字符串中的128字节附近有制表符或空格字符,则Fc.exe命令在基于Windows XP的计算机上无法正常工作 项目ID:953932-当您正在比较的两个文件在字符串中的128字节附近有制表符或空格字符时,Fc.exe命令在Windows Vista或Windows Server 2008中无法正常工作 我建议你试试
findstr /i /L /x /v /g:xyz.txt abc.txt > unique.txt
它应该报告abc.txt
中没有出现在xyz.txt
中的任何行(/i
忽略大小写,/L
字面上,没有正则表达式,/x
-精确匹配,而不是在不匹配的部分行上)
因此,
abc.txt
中任何未出现在xyz.txt
中的行都将被定向到unique.txt
(tks JosefZ)可能重复。看到我的评论了吗,现在在Win-8
上检查了一下,还有什么解决办法吗?说真的,当时在XP
上,我没有寻找答案。尝试Powershell…我使用的是Windows 7请将您的问题包括在unique.txt中“有适用于Windows XP和Windows Vista的修补程序。我没有看到适用于Windows 7的修补程序”-这些修补程序是在2008年发布的。W7是在2009年7月发布的,所以我们假设修复是向前滚动的。我在Windows7上尝试了OP的问题,得到了相同的结果。在Windows 7中,它似乎还没有被修复。做得很好,但是/X
开关意味着打印完全匹配的行。改用/V
(或者更进一步?):只打印不包含匹配项的行,因为OP需要其他文本文件中的唯一记录。考虑1次运行两次。代码>/g:xyz.txt abc.txt>unique.txt和2/g:abc.txt xyz.txt>>unique.txt
…我只需要abc.txt文件中的唯一记录,但我仍然无法获取该记录