目录
1、校验脚本功能说明:
1.获取待检查状态的数据文件(*.verify),并生成该文件的md5值,输出一个ftp服务端校验文件(文件名称.server.md5)
2.将上面校验结果日志输出到指定目录,并按照每天一个文件输出。
3.读取*.server.md5文件,判定数据文件是否还存在,不存在校验MD5值输出文件。
4.客户端MD5值与服务端MD5值对比结果输出内容日志
5.校验文件大小以字节为单位输出到日志中。
2、校验脚本内容:
@echo off
chcp 936
setlocal enabledelayedexpansion
rem 根据当前日期获取,年月日串
set YYYYmmdd1=%date:~0,4%-%date:~5,2%-%date:~8,2%
set hhmiss1=%time:~0,2%:%time:~3,2%:%time:~6,2%:%time:~9,2%
set YYYYmmdd=%date:~0,4%%date:~5,2%%date:~8,2%
set hhmiss=%time:~0,2%%time:~3,2%%time:~6,2%
echo ===========Welcome===========
echo start %YYYYmmdd1% %hhmiss1%
set "date_time=%YYYYmmdd1% %hhmiss1%"
echo=
echo ========Get all file paths in the directory==========
rem 日志文件路径(日志目录如果没有请手动创建)
set log_file=D:\FTP\dev_test
rem 日志级别信息文件输出
set log_name_debug=md5_check_debug-%YYYYmmdd%.log
set log_name_info=md5_check_info-%YYYYmmdd%.log
set log_name_error=md5_check_error-%YYYYmmdd%.log
rem 获取待检查状态的数据文件(*.verify)目录(校验文件目录,根据实际目录路径修改)
set verify_file=D:\FTP\dev_test
rem MD5生成文件路径
rem set "MD5_pwd=E:"
rem set "MD5_file_name=check_file_list-%YYYYmmdd%%hhmiss%"
set "MD5_file_name=check_file_list"
rem MD5文件名列表
set "output=%verify_file%\%MD5_file_name%.txt"
echo= >>%log_file%\%log_name_debug%
echo %date:~,10% %time:~,11% ========Start running MD5 check bat========== >>%log_file%\%log_name_debug%
echo %date:~,10% %time:~,11% Create MD5 file list:%output% >>%log_file%\%log_name_debug%
echo=
forfiles /p %verify_file% /m *.verify /d -0 >%output%
echo ========Start MD5 verification and save file==============
set hash=MD5
for /f %%i in (%output%) do (
echo %%i
set verify_tmp=%%i
call :gethash %hash% !verify_tmp! rs
rem 生成校验MD5文件
for %%I in (!verify_tmp!) do (
if exist %verify_file%\%%~nI.client.md5 (
echo %date:~,10% %time:~,11% %verify_file%\%%~nI.client.md5 File exists >>%log_file%\%log_name_debug%
rem 获取文件大小字节为单位
for /f "delims=" %%i in ('dir /b /s %verify_file%\%%~nI.verify') do (
echo %%~zi
)
if exist %verify_file%\%%~nI.server.md5 (
echo %date:~,10% %time:~,11% MD5 check file:%%~nI.server.md5 already exists >>%log_file%\%log_name_debug%
) else (
echo %date:~,10% %time:~,11% MD5 check file does not exist. Start creating MD5 check file >>%log_file%\%log_name_debug%
echo %date:~,10% %time:~,11% file:!verify_tmp! md5: !rs! >>%log_file%\%log_name_debug%
echo !rs! >%verify_file%\%%~nI.server.md5.tmp
echo %date:~,10% %time:~,11% MD5 verification tmp file creation completed >>%log_file%\%log_name_debug%
rem 获取client.md5值
for /f "delims=" %%c in ('type %verify_file%\%%~nI.client.md5') do (
echo %date:~,10% %time:~,11% file:%verify_file%\%%~nI.client.md5 md5:%%c >>%log_file%\%log_name_debug%
(for /f "delims=" %%a in (%verify_file%\%%~nI.server.md5.tmp) do (
set "line=%%a"
set "line=!line: =!"
rem 对比client.md5和server.md5值
if "%%c"=="!line!" (
echo %date:~,10% %time:~,11% MD5 check %%~nI.client.md5:%%c and %%~nI.server.md5:!line! identical >>%log_file%\%log_name_debug%
echo %date:~,10% %time:~,11% file:!verify_tmp! size:%%~zi md5:!line! status:identical >>%log_file%\%log_name_info%
) else (
echo %date:~,10% %time:~,11% MD5 check %%~nI.client.md5:%%C and %%~nI.server.md5:!line! Different >>%log_file%\%log_name_debug%
echo %date:~,10% %time:~,11% file:!verify_tmp! size:%%~zi md5:!line! status:Different >>%log_file%\%log_name_error%
)
echo !line!> %verify_file%\%%~nI.server.md5
rem echo %date:~,10% %time:~,11% file:!verify_tmp! size:%%~zi md5:!line! check:%md5_check% >>%log_file%\%log_name_info%
echo %date:~,10% %time:~,11% MD5 verification file creation completed >>%log_file%\%log_name_debug%
del %verify_file%\%%~nI.server.md5.tmp
echo %date:~,10% %time:~,11% MD5 verification del %%~nI.server.md5.tmp file creation completed >>%log_file%\%log_name_debug%
))
)
)
)
)
)
:gethash
rem 参数1-3 1:hash函数名 2:文件名 3:返回hash值
for /f "skip=1 delims=" %%i in ('certutil -hashfile "%verify_file%\%2" %~1') do (
set %3=%%i& goto :eof
)
pause
exit
3、校验脚本测试:
校验文件路径,根据实际情况定义,windows_check_file_md5.bat脚本文件和校验文件同一目录。
对应脚本路径:
rem 获取待检查状态的数据文件(*.verify)目录(校验文件目录,根据实际目录路径修改)
set verify_file=D:\FTP\dev_test

运行bat文件。
4、校验脚本测试结果:
4.1、测试文件结果展示:

4.1、校验MD5字符串结果文件展示:

5、校验脚本测试日志:
日志每天生成一个,日志目录没有需要自行创建。
对应脚本路径:
rem 日志文件路径(日志目录如果没有请手动创建)
set log_file=D:\FTP\dev_test
rem 日志级别信息文件输出
set log_name_debug=md5_check_debug-%YYYYmmdd%.log
set log_name_info=md5_check_info-%YYYYmmdd%.log
set log_name_error=md5_check_error-%YYYYmmdd%.log
5.1、debug日志信息展示:

5.1、Info日志信息展示:
![]()
5.2、error日志信息展示:
![]()
6、Windows计划任务添加
通过Windows server 2012系统为例添加计划任务程序,定时每分钟执行脚本。
以下为添加流程图:







最后点击运行,每分钟执行脚本
Windows环境下的文件MD5校验与计划任务脚本
本文介绍了如何在Windows环境下编写一个用于文件MD5校验的bat脚本,详细阐述了脚本的功能,包括生成MD5值、日志记录和计划任务设置。脚本会检查*.verify文件,生成.server.md5文件,对比客户端和服务端的MD5值,并记录日志。同时,提供了在Windows Server 2012上设置计划任务的步骤,以便定期执行校验。
1624

被折叠的 条评论
为什么被折叠?



