VBScriptからWindows標準のcertutilコマンドを実行し、指定したファイルのMD5ハッシュ値を取得する方法を紹介します。外部ライブラリ不要で簡単に実装できます。
はじめに
MD5ハッシュ値を取得する方法の一つとして、Windows標準のcertutilコマンドがありますが、こちらのコマンドで取得した場合、以下のような情報まで表示されてしまいます。
c:\workspace>certutil -hashfile サンプルファイル.txt MD5 MD5 ハッシュ (対象 サンプルファイル.txt): d4bfd1edaa4786e56e6306051a310693 CertUtil: -hashfile コマンドは正常に完了しました。
本記事では、VBScriptを使用し、certutilコマンドの取得結果を加工することで、
「MD5ハッシュ値 ファイルパス」形式となるように出力するサンプルをご紹介します。
外部ツールやDLLを用意する必要がないため、ちょっとしたスクリプト用途にも便利です。
ソースコード
サンプルコードです。
Option Explicit
' MD5ハッシュ値取得対象パス
Const TargetPath = "C:\Workspace\file.txt"
Dim sh, exec, count, line
Set sh = CreateObject("WScript.Shell")
Set exec = sh.Exec("certutil -hashfile """ & TargetPath & """ MD5")
count = 0
Do Until exec.StdOut.AtEndOfStream
line = Trim(exec.StdOut.ReadLine)
count = count + 1
If count = 2 Then
WScript.Echo(LCase(line) & " " & TargetPath)
End If
Loopサンプルコードの処理の流れになります。
- MD5ハッシュ値を取得したいファイルパスを定数として指定(4行目)
- WScript.Shell を使って certutil コマンドを実行(9行目)
- 標準出力から2行目(MD5ハッシュ値)を取得(12-18行目)
- 小文字に変換し、ファイルパスと一緒に出力(16行目)
実行結果
実行結果のイメージです。
スクリプトをダブルクリックで実行すると、以下のような文字列がメッセージボックスに表示されます。
9f06243abcb89c70e0c331c61d871fa7 C:\Workspace\file.txt
コマンドプロンプトから実行することも可能で、その場合は以下のようになります。
C:\Workspace\VBScript>cscript //nologo md5.vbs 9f06243abcb89c70e0c331c61d871fa7 C:\Workspace\file.txt
解説記事
本記事に登場する技術について解説している記事をまとめておきました。

【コマンドプロンプト】ファイルのMD5ハッシュ値を取得する方法
Windowsのコマンドプロンプトで、certutilコマンドを使用して、ファイルのMD5ハッシュ値を取得する方法を説明します。

【VBScript】コマンドプロンプトからVBScriptファイルを実行する
基本的にはダブルクリックで実行可能なVBScriptファイルですが、コマンドプロンプトから実行したい場合もあると思います。今回はコマンドプロンプトから実行する方法を解説します。
シンプルにハッシュ値を取得したい場合には、今回の方法は手軽でおすすめです。
用途に応じてアルゴリズム部分を変更してみてください。
リンク



コメント