最後に、判定処理について解説します。
最初に、「 $K 」,「 $H 」という2つの変数を定義しています。
どちらも、その中身には " (Get-Content テキストファイル名)[行] " を格納しているのですが、これは一度テキストファイルの全文を読み込んでから、指定の行の文字列を抜き出すというものです。
これにより、基準となる「kijun.txt の $LN 行目」と、比較対象となる「hikakutaishou.txt の $LN 行目」の文字列を抜き出すことができます。
次はそれらが一致しているか否かを判定するのですが、判定自体は、前半でも使った比較演算子 " -eq " を使えば簡単です。
両文字列が完全に同じものであれば「True」、少しでも違えば「False」という実行結果になります。
各行の実行結果を、そのまんま一行ずつ「kekka.txt」に出力しても良いのですが、何行目が「True」で何行目が「False」なのかが分かりやすいよう、一工夫します。
実行結果がどちらであれ、まずそれを「 $C 」という変数に格納します。
次に、判定対象行を示す変数「 $LN 」に、+1 し、新たな変数「 $LN2 」に格納します。
※ +1 するのは、PowerShell 上で「ゼロ」から始まる行数を、人間にも分かりやすい「1」から始まる行数に直すためです。
最後に、$LN2 と $C を連結して一続きの文字列にします。
こうすれば、何行目が「True (あるいは False ) 」なのかが分かりやすく出力されます。
しかし、連結には注意が必要です。前半でやったように、単純に「+」で並べる事は出来ません。
それをしてしまうと、「True = 1」、「False = 0」と見做して足し算が行われてしまいます。
このような場合は、" -join " という配列演算子を用いて連結ます。
先に「 $R 」という変数を定義し、 $LN2 と $C を「カンマ区切り」で格納します。
これだけだと、$R の中身は「改行された二行のテキスト」になってしまうのですが、次に $R -join " : " を実行することで「コロンによって連結された一行のテキスト」に変換できます。
それを「kekka.txt」に出力することで、「何行目が一致していて、何行目が不一致なのか」が分かるようになります。
以上で、2013年12月24日の記事に書いたスクリプトの解説は終了です。
が、しかし・・・・
ちょっと書き足りないことがあるので補足編に続きます。