下記ファイルをどっかに置いとく。
僕の趣味としては常々スクリプトファイル置き場を作っているのでそこ
@echo off
for /f "usebackq delims=" %%a in (`powershell get-clipboard`) do set hash=%%a
echo clip:%hash%
echo file:%1
certutil -hashfile %1 MD5|findstr /I /X %hash%
if errorlevel 1 (
echo "NOT MATCH"
) else (
echo "matched"
)
pause
exit /b
使い方
- クリップボードにMD5をコピーする
- 上記batchに、downloadした検証対象をドラッグ&ドロップ
- 結果を眺める
sendToに入れとけばドラッグ&ドロップの代わりに
右クリックメニュー>送る>バッチファイル名
の操作でどこからでも呼べる
バッチファイルをそのまま置くと権限がめんどい可能性があるのでショートカットにしている。
sendToって何って「送る」のこと
%appdata%\microsoft\windows\sendTo
何やってんの?
for /f "usebackq delims=" %%a in (`powershell get-clipboard`) do set hash=%%a
クリップボードの取得powershell get-clipboardと変数hashへの格納
certutil -hashfile %1 MD5|findstr /I /X %hash%
ファイルのハッシュ値取得certutil -hashfileと一致確認findstr
MD5の部分を別のアルゴリズム名に置き換えれば別のハッシュ値とも照合できる。
findstrのオプションで/Iはあるとダメな場合もあった気がする
if errorlevel 1 ( echo "NOT MATCH" ) else ( echo "matched" )
certutilとfindstrとでエラーが出ると1以上になる。
certutilだとファイルがないとかで出ると思う。
findstrは検索結果がないとerrorlevelを1にする。
懸念
クリップボードの内容とかファイル名(がくるはずの第一引数)とかを利用しているが、
ここに「>」が入り込んだりするとファイル更新かかっちゃったりして危険かもしれんので、本当はエスケープすべきかも。
%hash:>=%
とかでいいのかしらん
参考