文件校验值计算器
一、工具作用
1. 网上下载了软件后,需要计算文件哈希值与发布者提供的哈希值进行对比,以确认下载的是正确的、完整的文件。
2. 想要发布软件,提供文件哈希值可以让下载者可以核对下载的软件是否正确、完整,是否下载失败不完整,或是否被恶意篡改过。
二、介绍
名称: 文件校验值计算器
当前版本: v1.4.1 Final 最终版
子版本:
3in1_Lite版 计算 MD5 SHA1 SHA256 三种常用哈希值,不保存结果文件
3in1版 计算 MD5 SHA1 SHA256 三种常用哈希值,自动保存结果文件到当前目录
7in1版 计算 MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512 七种哈希值,自动保存结果文件到当前目录
v1.4各版本已支持以文件夹为目标进行计算
使用方法:
方法1、将文件拖动到脚本上,一次最多拖 9 个文件。
方法2、右击文件使用菜单“发送到” ->“计算文件校验值并保存到当前目录3in1.cmd” (推荐)
关于: 本工具基于Windows CertUtil 证书工具制作。
三、截图与说明
1、 第一次使用,双击 文件校验值计算器v1.3_3in1.cmd,自动安装到右键“发送到”菜单。
2、选中需要计算的文件 -> 右键 -> 发送到 -> 计算文件校验值并保存到当前目录3in1.cmd
3、结束后自动弹出计算结果并保存在当前目录。
四、下载
文件校验值计算器v1.4.1_Final.zip @2021.05.09
蓝奏云:
文件名称: 文件校验值计算器v1.4.1_3in1.cmd
文件大小: 0.004 MB (3904 字节)
修改时间: 2021/05/09 09:34
MD5: C2E1E16D04FE0351DCEB7A19830500A5
SHA1: 7CDC83A354D33F264257E4C3D0CA9D0AA6EB5F15
SHA256: 8041D9E4008AF6DF7501D9AA8F414A19A8C59115A5E6132E2C8BB7A619567558
文件名称: 文件校验值计算器v1.4.1_7in1.cmd
文件大小: 0.004 MB (4172 字节)
修改时间: 2021/05/09 09:34
MD5: D5ED9B5349CB28A1548A8116708A468B
SHA1: 102E06E1C7D738D3F09D58AFEBF98ADD83BB78C3
SHA256: BD0B95537CD94B78AB75681D1930906C8B94C1D585F38FA94624E85128B86059
文件名称: 文件校验值计算器v1.4_Lite.cmd
文件大小: 0.004 MB (3606 字节)
修改时间: 2021/04/18 23:24
MD5: A6080B8BC23910DC35AFFE657C531BB2
SHA1: EE47BA5637B2479D4641AB7498DE458FC096F375
SHA256: 72F87D2814B61D7E73282549A8634D4EF8F76333E2DA4049BD51ED342F5BE091
五、日志
v1.4.1 2021.05.09
1、修复hash结果文件名中时间生成算法中的bug中有空格
原来如果时间是上午10点前,时间中会有空格,进而产生bug。
v1.4 Final 2021.04.18
1、增加 将文件夹 发送到 文件校验值计算器 的支持。
2、3in1版和7in1版 效果为:计算文件夹下所有文件(不含子文件夹)的校验值,并将结果保存于文件夹下。
3in1_Lite版 效果为:计算文件夹下所有文件(不含子文件夹)的校验值,不保存结果文件到目录。
v1.3 2021.04.14
1、计算结束自动在默认txt阅读器中打开
2、校验值txt文件存于文件当前目录
3、空白文件不计算
4、目录不计算
5、区分3个小版本
3in1_Lite版 计算 MD5 SHA1 SHA256 三种常用哈希值,不保存结果文件
3in1版 计算 MD5 SHA1 SHA256 三种常用哈希值,自动保存结果文件到当前目录
7in1版 计算 MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512 七种哈希值,自动保存结果文件到当前目录
v1.2 2021.04.14
1、计算结束自动在默认txt阅读器中打开
2、校验值txt存于文件当前目录
v1.1 2021.04.14
1、添加到右键“发送到”菜单快捷使用方式
v1.0 2021.04.14
1、计算文件的 MD5 SHA1 SHA256 值
六、源码
既然被规定移动到源码区了,那就贴下文件校验值计算器v1.4_3in1
的源码吧,其他版本源码请直接下载查看。
bat源码
@ECHO OFF&TITLE 文件校验值计算器v1.4_3in1 by.52Echo
if not %1.==. GOTO:_START
color 0e & ECHO. & ECHO. 没有文件要计算校验值!& ECHO.
ECHO. 请右击文件使用菜单“发送到” -^>“计算文件校验值并保存到当前目录3in1.cmd”...& ECHO.
copy /y "%~f0" "%APPDATA%\Microsoft\Windows\SendTo\计算文件校验值并保存到当前目录3in1.cmd" >nul 2>nul & pause & EXIT /B 1
:_START
setlocal enabledelayedexpansion
mode con: cols=80 lines=20
SET "hash_out_MD5=MD5: "
SET "hash_out_SHA1=SHA1: "
SET "hash_out_SHA256=SHA256: "
IF NOT EXIST "%~1" GOTO:_END
set str_date=%date:~,4%-%date:~5,2%-%date:~8,2%
set str_time=%time:~,2%-%time:~3,2%-%time:~6,2%
set str_dt=%str_date%_%str_time%
set str_dt=%str_dt: =%
SET "TEMP_FILE=Hash_%str_dt%.txt"
CALL:HashCalc "%~1"
IF NOT EXIST "%~2" GOTO:_END
CALL:HashCalc "%~2"
IF NOT EXIST "%~3" GOTO:_END
CALL:HashCalc "%~3"
IF NOT EXIST "%~4" GOTO:_END
CALL:HashCalc "%~4"
IF NOT EXIST "%~5" GOTO:_END
CALL:HashCalc "%~5"
IF NOT EXIST "%~6" GOTO:_END
CALL:HashCalc "%~6"
IF NOT EXIST "%~7" GOTO:_END
CALL:HashCalc "%~7"
IF NOT EXIST "%~8" GOTO:_END
CALL:HashCalc "%~8"
IF NOT EXIST "%~9" GOTO:_END
CALL:HashCalc "%~9"
:_END
IF EXIST %TEMP_FILE% start %TEMP_FILE%
ECHO.&ECHO.2秒后自动关闭...&timeout /t 2 >nul
EXIT /B 0
:HashCalc _path
IF NOT EXIST "%~1\" CALL:CalcAll "%~1" &EXIT /B 0
pushd "%~1\"
FOR %%i in (*) do CALL:CalcAll "%%i"
IF EXIST %TEMP_FILE% start %TEMP_FILE%
popd
EXIT /B 0
:CalcAll _file
ECHO.正在计算文件: %1
CALL:Show_file %1>>%TEMP_FILE%
IF %~z1==0 ECHO.空白文件,不做计算!&EXIT /B 2
CALL:Calc %1 MD5>>%TEMP_FILE%
CALL:Calc %1 SHA1>>%TEMP_FILE%
CALL:Calc %1 SHA256>>%TEMP_FILE%
ECHO.>>%TEMP_FILE%
ECHO.完成.
EXIT /B 0
:Calc _file _Algorithm
SET "index=0"
FOR /F "delims=" %%a in ('certutil -hashfile %1 %2') do (
SET /A "index+=1"
IF !index!==2 SET hash=%%a&SET hash=!hash: =!
)
FOR %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do CALL SET hash=%%hash:%%i=%%i%%
ECHO.!hash_out_%2!%hash%
EXIT /B 0
:Show_file
ECHO.文件名称: %~nx1
SET fz0=%~z1
SET /A "fz1=fz0/1048576"
SET /A "fz2=(fz0-fz1*1048576+512)/1024"
IF %fz2% GEQ 100 SET fz=%fz1%.%fz2%&GOTO:fz_end
IF %fz2% GEQ 10 SET fz=%fz1%.0%fz2%&GOTO:fz_end
SET fz=%fz1%.00%fz2%&GOTO:fz_end
:fz_end
ECHO.文件大小: %fz% MB (%~z1 字节)
ECHO.修改时间: %~t1
IF %~z1==0 ECHO. 空白文件,不做计算!&ECHO.
EXIT /B 0
七、更新说明
2020.04.18 发布 v1.4 最终版。
已支持直接将文件夹作为发送到计算校验值目标
功能为计算文件夹一级目录下所有文件哈希值。
不计算子文件夹
2021.05.09 修复bug
修复hash结果文件名中时间生成算法中的bug中有空格
原来如果时间是上午10点前,时间中会有空格,进而产生bug。
Lite版无影响
不再更新,转用7-zip的Hash值文件生成菜单了。