You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Windows批处理检测文件变更并实现通知?

用Windows批处理实现文件变更监控(无需额外软件)

可以实现,核心思路是通过循环检测目标文件的修改时间和文件大小,与基准值对比,当任意一项发生变化时触发通知。以下是可直接使用的批处理脚本:

@echo off
setlocal enabledelayedexpansion

:: 配置监控参数
set "MONITOR_FILE=C:\your\file\path\target.txt"  :: 替换为你的目标文件路径
set "CHECK_INTERVAL=5"                          :: 检测间隔(秒)

:: 初始化基准信息
for %%f in ("%MONITOR_FILE%") do (
    set "LAST_MODIFY=%%~tf"
    set "LAST_SIZE=%%~zf"
)

echo 已启动文件监控:%MONITOR_FILE%
echo 初始基准:修改时间[%LAST_MODIFY%] | 文件大小[%LAST_SIZE%]字节
echo.

:DETECT_LOOP
:: 等待指定间隔
timeout /t %CHECK_INTERVAL% /nobreak >nul 2>&1

:: 获取当前文件状态
for %%f in ("%MONITOR_FILE%") do (
    set "CURRENT_MODIFY=%%~tf"
    set "CURRENT_SIZE=%%~zf"
)

:: 对比状态,触发变更通知
if not "!CURRENT_MODIFY!"=="!LAST_MODIFY!" goto ON_CHANGE
if not "!CURRENT_SIZE!"=="!LAST_SIZE!" goto ON_CHANGE

goto DETECT_LOOP

:ON_CHANGE
echo ==============================================
echo 【文件变更通知】%date% %time%
echo 目标文件:%MONITOR_FILE%
echo 原修改时间:%LAST_MODIFY% → 新修改时间:!CURRENT_MODIFY!
echo 原文件大小:%LAST_SIZE%字节 → 新文件大小:!CURRENT_SIZE!字节
echo ==============================================
:: 弹出系统消息框(可选)
msg * "文件 %MONITOR_FILE% 已发生变更!"

:: 更新基准状态,继续监控
set "LAST_MODIFY=!CURRENT_MODIFY!"
set "LAST_SIZE=!CURRENT_SIZE!"
goto DETECT_LOOP

关键说明

  • 延迟变量扩展:setlocal enabledelayedexpansion是必须的,确保循环内的变量能实时更新
  • 状态检测:%%~tf提取文件修改时间,%%~zf提取文件大小,双重检测可减少误判
  • 通知方式:除了控制台输出,msg *会给所有登录用户弹出Windows消息框;如果只需要控制台提示,可删除该行
  • 间隔调整:修改CHECK_INTERVAL的值可调整检测频率,建议设为3-10秒,避免占用过多CPU

局限性

  • 无法识别“修改内容后文件大小和时间未变”的极端场景(几乎不会遇到)
  • 如果目标文件被删除后重建,脚本会报错;可在循环前添加if not exist "%MONITOR_FILE%"的判断逻辑自行优化

内容的提问来源于stack exchange,提问作者Michael Hutter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:35:14