批处理文件比较属性文件[初学者]

时间:2016-08-10 19:56:47

标签: batch-file compare

我编写批处理文件来比较两个或多个文件的属性。

我将要比较的文件都具有如下所示的相同格式: property1 = PROP1 property2 = PROP2 ...

对于我的输出,我只想显示有差异的行。我尝试使用FC命令,但它似乎包括行之前和之后的行以及差异。

有没有办法只显示差异线?

1 个答案:

答案 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参数   选择要查看的属性。