WindowsのPowerShellで、指定したフォルダ配下にあるファイルのMD5ハッシュ値を取得する方法を解説します。
フルパスとハッシュ値を取得する
ここでは、フォルダ配下にあるファイルのフルパスとMD5ハッシュ値を取得する方法を説明します。
Get-ChildItem -Path "C:\workspace\folder" -Recurse -File | Select-Object FullName, @{Name="MD5Hash";Expression={(Get-FileHash -Path $_.FullName -Algorithm MD5).Hash}}
コマンドの実行結果です。
FullName MD5Hash -------- ------- C:\workspace\folder\file1.log 933222B19FF3E7EA5F65517EA1F7D57E C:\workspace\folder\file1.txt C5053D4DA03789BFBC4BEE760FADE936 C:\workspace\folder\file2.log FA1F726044EED39DEBEA9998AB700388 C:\workspace\folder\file2.txt BA73AD5FC2ED01C25A420738836E432D C:\workspace\folder\file3.log BA73AD5FC2ED01C25A420738836E432D C:\workspace\folder\file3.txt 87BE7337CD4B795FDEB99DF8370FEF92
CSV形式で取得する
ここでは、フォルダ配下にあるファイルのフルパスとファイルサイズ、MD5ハッシュ値をCSV形式(カンマ区切り)で取得する方法を説明します。
Get-ChildItem "C:\workspace\folder" -Recurse -File | ForEach-Object { "$($_.FullName),$($_.Length),$( (Get-FileHash $_.FullName -Algorithm MD5).Hash )" }
コマンドの実行結果です。
C:\workspace\folder\file1.log,166,F99AA8B497FF4E645EEB027BA030813A C:\workspace\folder\file1.txt,265,7F3DCD2B2B7E1C6F5A998F94AD725650 C:\workspace\folder\file2.log,3,FA1F726044EED39DEBEA9998AB700388 C:\workspace\folder\file2.txt,3,BA73AD5FC2ED01C25A420738836E432D C:\workspace\folder\file3.log,3,BA73AD5FC2ED01C25A420738836E432D C:\workspace\folder\file3.txt,6,87BE7337CD4B795FDEB99DF8370FEF92
TSV形式で取得する
ここでは、フォルダ配下にあるファイルのフルパスとファイルサイズ、MD5ハッシュ値をTSV形式(タブ区切り)で取得する方法を説明します。
TSV形式であれば、Excelにそのまま貼り付けることが出来るので便利かと思います。
Get-ChildItem "C:\workspace\folder" -Recurse -File | ForEach-Object { "$($_.FullName)`t$($_.Length)`t$( (Get-FileHash $_.FullName -Algorithm MD5).Hash )" }
コマンドの実行結果です。
C:\workspace\folder\file1.log 166 F99AA8B497FF4E645EEB027BA030813A C:\workspace\folder\file1.txt 265 7F3DCD2B2B7E1C6F5A998F94AD725650 C:\workspace\folder\file2.log 3 FA1F726044EED39DEBEA9998AB700388 C:\workspace\folder\file2.txt 3 BA73AD5FC2ED01C25A420738836E432D C:\workspace\folder\file3.log 3 BA73AD5FC2ED01C25A420738836E432D C:\workspace\folder\file3.txt 6 87BE7337CD4B795FDEB99DF8370FEF92
TSV形式での取得と結果をコピーする
ここでは、フォルダ配下にあるファイルのフルパスとファイルサイズ、MD5ハッシュ値をTSV形式(タブ区切り)で取得する方法を説明します。
また、取得した結果を自動でコピーします。
Get-ChildItem "C:\workspace\folder" -Recurse -File | ForEach-Object { "$($_.FullName)`t$($_.Length)`t$( (Get-FileHash $_.FullName -Algorithm MD5).Hash )" } | clip
コマンドの実行結果です。
PowerShellのターミナルには何も表示されませんが、
貼り付け(Ctrl + V)することで、以下のような結果を得ることが出来ます。
C:\workspace\folder\file1.log 166 F99AA8B497FF4E645EEB027BA030813A C:\workspace\folder\file1.txt 265 7F3DCD2B2B7E1C6F5A998F94AD725650 C:\workspace\folder\file2.log 3 FA1F726044EED39DEBEA9998AB700388 C:\workspace\folder\file2.txt 3 BA73AD5FC2ED01C25A420738836E432D C:\workspace\folder\file3.log 3 BA73AD5FC2ED01C25A420738836E432D C:\workspace\folder\file3.txt 6 87BE7337CD4B795FDEB99DF8370FEF92
リンク
コメント