Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save hankei6km/9094b1e430f1deb3bdc0757bbcc8d5ac to your computer and use it in GitHub Desktop.
Save hankei6km/9094b1e430f1deb3bdc0757bbcc8d5ac to your computer and use it in GitHub Desktop.
PowerShell でファイルのハッシュ値を sha256sum -c で使えるように表示

PowerShell でファイルのハッシュ値を sha256sum -c で使えるように表示

※ 2014-12 に記述したメモです。Gist にアップロードした時点と比べて内容が古い可能性があります

PowerShell の v4 以降であれば Get-FileHash が使える.

ただし、sha256sum のようなフォーマットでは出力されないので、 とりあえず以下のようにする.

PS> Get-ChildItem . | Get-FileHash -Algorithm SHA256 | ForEach-Object { $_.hash + " *" + (($_.path | Resolve-Path -Relative) -replace '^\.\\' , '') }

これが動けば、これでもいいのだが、 日本語のパス(だと思う) の場合 Resolve-Path -Relative の出力がおかしい(?) ときがある.

絶対パスとか子フォルダを使うこともまずないので、 以下のようにしてしまうという手もなくはない.

PS> Get-ChildItem . | Get-FileHash -Algorithm SHA256 | ForEach-Object { $_.hash + " *" + ($_.path | Split-Path -Leaf)  }

なお、ファイルにリダイレクトした場合、

  • 同じディレクトにリダイレクトするとエラーになる
  • UTF-16LE の CRLF 改行になっている.

UTF-16LE の CRLF の方はvim で開いて、:set fileencoding=utf8 :set fileformat=unix を実行して保存. これだと、まだ BOM が付いているので vim -b foo.sha で開いて BOM を消す.

vim で変換は面倒なので、考え中.

これでいけると思う $ cat foo.sha | iconv -f utf16 -t utf8 | tr -d "\r" | sha256sum -c


License: CC0 1.0 http://creativecommons.org/publicdomain/zero/1.0/deed.ja

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment