2016-08-10 6 views
0

複数のファイルのプロパティを比較するバッチファイルを作成しました。私はすべてを比較しますバッチファイルとプロパティファイルの比較[初心者]

ファイルは同じフォーマットを以下に示します: はプロパティ1 = PROP1 property2 = PROP2 ...私の出力の場合

は、私が唯一の相違点とラインのように表示されるようになります。私はFCコマンドを使ってみましたが、違いがある行の前後に行が含まれているようです。

違いがある行だけを表示する方法はありますか?代わりFC.EXE

答えて

0

、使用Compare-Object cmdletpowershell.exeから:

詳細な説明

Compare-Objectレットは、オブジェクトの二組の比較: "基準設定" されている オブジェクトの一組をもう1組は 「差異セット」です。

比較の結果は、(プロパティ値 が

  • のみ設定差分からオブジェクトに、のみ(<=記号で示される)参照セットからオブジェクトに

    • 登場するかどうかを示します=>シンボル)、または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指定さ 場所でアイテムの内容を取得しますファイル内のテキストなどのパスによって表示されます。コンテンツを一度に1行ずつ と読み込み、それぞれがコンテンツの行を表す のオブジェクトのコレクションを返します。

    Format-Table cmdletは、コマンドの出力を、各列のオブジェクトの選択されたプロパティを持つ テーブルとして書式設定します。 オブジェクトタイプは、デフォルトのレイアウトと各列に表示される のプロパティを決定しますが、 にはPropertyパラメータを使用して、表示するプロパティを選択できます。

    +0

    私は 'powershell -c compare(gc file1.txt)(gc file2.txt)^を使用しました。 FT -auto'どうすればSideIndicator列を取り除くことができますか?また、 '-c'コマンドは何をしますか? – Alan

    +0

    そして、私のすべてのプロパティの上にある "InputObject"テキストを取り除くことは可能ですか? – Alan

    +0

    @Alan _Format-Table'コマンドレットへのリンクを読んでください。 '-HideTableHeaders'と' -Property'に注目してください。それで、あなたは '...^| FT -Auto -Hide -Property InputObject'を選択します。 '-c'の意味は' powershell /? 'の' -command'パラメータの説明を参照してください。 – JosefZ