我编写批处理文件来比较两个或多个文件的属性。
我将要比较的文件都具有如下所示的相同格式: property1 = PROP1 property2 = PROP2 ...
对于我的输出,我只想显示有差异的行。我尝试使用FC命令,但它似乎包括行之前和之后的行以及差异。
有没有办法只显示差异线?
答案 0 :(得分:0)
而不是FC.EXE
,请使用powershell.exe
中的Compare-Object
cmdlet:
详细说明
Compare-Object
cmdlet比较两组对象:一组 对象是" 引用集",另一个是 " 差异设置"。比较结果表明是否属性值 出现
- 仅在参考集的对象中(由
<=
符号表示),- 仅在差异集中的对象中(由
=>
符号表示)或- 如果指定了
IncludeEqual
参数,则在两个对象中(由==
符号表示)。
@ECHO OFF
SETLOCAL EnableExtensions
rem change next two `set` commands to meet your circumstances:
set "_refFile=%temp%\ReferenceFile.txt"
set "_difFile=%temp%\DiferenceFile.txt"
powershell -command Compare-Object ^
-ReferenceObject $(Get-Content "%_refFile%") ^
-DifferenceObject $(Get-Content "%_difFile%") ^| Format-Table -AutoSize
太强大?只需使用(从开放的cmd
窗口):
powershell -c compare (type file1.txt) (type file2.txt) ^| FT -auto
甚至:
powershell -c diff (gc file1.txt) (gc file2.txt)
注意强>:
Get-Content
cmdlet获取该项目的内容 路径指定的位置,例如文件中的文本。它读 内容一次一行并返回一组对象, 每个代表一行内容。
Format-Table
cmdlet将命令的输出格式化为 具有每列中对象的选定属性的表。该 对象类型确定默认布局和属性 显示在每列中,但您可以使用Property
参数 选择要查看的属性。