背景・経緯
作業後に見直しをすることは多々ある。もとい、当たり前だろう。まさに目がザルなため、機械に任せたいという自己要件から執筆に至った。
powershell とwinmergeを利用した出力ファイルの差異を検出するためのスクリプトを作成した。
powershellで書くのはとりあえず名前がよかったから。
差異検出方法は様々だろうが、MS Microsft環境での作業の際に利用するために、書き残した。
いつかどこかで再利用するかもしれないため、書き溜めておく。
フロー
たいそれた意味はないが、アウトプットに至る過程は整理する必要がある。また、アウトプットに対して、本当に確からしいのか?という確証を得るのが常だと思われる。
往々にして仕事は忙しく、手作業だと間に合わない。また、人間の脳の認知の限界を超えた量の検証は土台にして可能ではない。
そのために自動化が有効だ。その際にやるべきことを書き出してみた。
・アウトプットの特定。どんなアウトプットか?データのレイアウトはどのような項目でどんな値を持つか?
・アウトプットに対するASIS TOBE的なツッコミ。本来ならこんな値だ。実際はどうなの?
・アウトプットのどの項目を検証する? 例 タイムスタンプを見比べる。
・結果をパターンマッチングする(照合する、比較する・・・パターンマッチングとはナウい言葉だな)
上記内容は全て自動化はできないため(面倒なため)、結果をパターンマッチングするところだけ作ってみた。
ソースコード
# WinMergeのインストールパスを指定 (必要に応じてフルパスに変更)
$winmergePath = "C:\Program Files (x86)\WinMerge\WinMergeU.exe"
# 比較するファイルのパス
$file1 = "C:\path\to\file1.txt"
$file2 = "C:\path\to\file2.txt"
# 出力するHTMLファイルのパス
$outputHtml = "C:\path\to\output.html"
# WinMergeのコマンドライン引数を設定
# /r はフォルダ比較の再帰オプション (ファイル比較の場合は不要)
# /u はGUIなしでの比較実行
# /wl は左側ファイルの内容を優先
# /wr は右側ファイルの内容を優先
# /or で結果をHTMLで保存
$arguments = "/u /or /dl ""File1"" /dr ""File2"" `"$file1`" `"$file2`" /out `"$outputHtml`""
# WinMergeの実行
& $winmergePath $arguments
ソースコードの概説
winmergeのコマンドパスを指定して、ファイルを指定して、引数を渡して実行する。
考察・課題
・未検証のため、利用した後に改善点をまとめたい。
・IPOのうち、OUTPUTでのミスを発見することで品質改善に努めたい。
コメント