脚本内容如下:
[PowerShell] 纯文本查看 复制代码 @echo off
setlocal enabledelayedexpansion
:: ================= 配置区域 =================
:: 设定原版文件夹名称
set "ORIG_DIR=原版文件夹"
:: 设定备份文件夹名称
set "BACK_DIR=备份文件夹"
:: 设定配置文件名称
set "CONFIG_FILE=config.ini"
:: ===========================================
:: 创建必要的文件夹
if not exist "%ORIG_DIR%" mkdir "%ORIG_DIR%"
if not exist "%BACK_DIR%" mkdir "%BACK_DIR%"
:: 检查配置文件是否存在
if not exist "%CONFIG_FILE%" (
echo [错误] 找不到配置文件: %CONFIG_FILE%
pause
exit /b
)
echo ---------------------------------------
echo MD5 校验与文件移动脚本开始运行
echo ---------------------------------------
:: 读取配置文件 (按逗号分割)
for /f "tokens=1,2 delims=," %%a in (%CONFIG_FILE%) do (
set "filename=%%a"
set "target_md5=%%b"
:: 检查文件是否存在
if exist "!filename!" (
echo 正在校验: !filename!
:: 获取文件的 MD5 值 (利用 certutil 工具)
set "current_md5="
for /f "skip=1 delims=" %%i in ('certutil -hashfile "!filename!" MD5') do (
if not defined current_md5 (
set "current_md5=%%i"
:: 去掉 MD5 字符串中的空格
set "current_md5=!current_md5: =!"
)
)
echo 当前 MD5: !current_md5!
echo 预期 MD5: !target_md5!
:: 比较 MD5 值 (不区分大小写 /i)
if /i "!current_md5!"=="!target_md5!" (
echo [结果] 匹配成功!移动到 %ORIG_DIR%
move "!filename!" "%ORIG_DIR%\" >nul
) else (
echo [结果] 匹配失败!移动到 %BACK_DIR%
move "!filename!" "%BACK_DIR%\" >nul
)
) else (
echo [跳过] 文件不存在: !filename!
)
echo ---------------------------------------
)
echo 任务处理完毕!
pause
配置文件示例:
[Asm] 纯文本查看 复制代码 1.txt,d41d8cd98f00b204e9800998ecf8427e
test.exe,5d41402abc4b2a76b9719d911017c592
data.zip,7b502c3a1f48c901b8334017057fc343 |