【VBScript】ファイルのMD5ハッシュ値を取得する方法


この記事はプロモーションを含みます。

VBScript

ホーム > VBScript 逆引きリファレンス

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

サンプルコードの処理の流れになります。

  1. MD5ハッシュ値を取得したいファイルパスを定数として指定(4行目)
  2. WScript.Shell を使って certutil コマンドを実行(9行目)
  3. 標準出力から2行目(MD5ハッシュ値)を取得(12-18行目)
  4. 小文字に変換し、ファイルパスと一緒に出力(16行目)

実行結果

実行結果のイメージです。
スクリプトをダブルクリックで実行すると、以下のような文字列がメッセージボックスに表示されます。

9f06243abcb89c70e0c331c61d871fa7 C:\Workspace\file.txt

コマンドプロンプトから実行することも可能で、その場合は以下のようになります。

C:\Workspace\VBScript>cscript //nologo md5.vbs
9f06243abcb89c70e0c331c61d871fa7 C:\Workspace\file.txt

解説記事

本記事に登場する技術について解説している記事をまとめておきました。

シンプルにハッシュ値を取得したい場合には、今回の方法は手軽でおすすめです。
用途に応じてアルゴリズム部分を変更してみてください。

コメント

タイトルとURLをコピーしました