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

求助:编写批处理文件比较文件日期并触发robocopy复制

批量文件日期对比与自动复制方案

核心思路

通过wmic命令精准获取文件的最后修改时间,转换为可直接对比的数字格式(YYYYMMDDHHMMSS),避免dir命令因系统区域格式差异导致的识别错误,再根据时间对比结果触发robocopy复制操作。

完整批处理代码

@echo off
setlocal enabledelayedexpansion

:: 定义目标文件路径
set "file1=C:\usr\File1"
set "file2=C:\temp\File2"

:: 前置检查:文件是否存在
if not exist "%file1%" (
    echo 错误:File1不存在于C:\usr路径下
    pause
    exit /b 1
)
if not exist "%file2%" (
    echo 错误:File2不存在于C:\temp路径下
    pause
    exit /b 1
)

:: 提取并转换File1的最后修改时间为YYYYMMDDHHMMSS格式
for /f "skip=1 tokens=1" %%a in ('wmic datafile where name^="%file1:\=\\%" get lastmodified') do (
    if not "%%a"=="" set "time1=%%a"
)
set "time1=!time1:~0,4!!time1:~4,2!!time1:~6,2!!time1:~8,2!!time1:~10,2!!time1:~12,2!"

:: 提取并转换File2的最后修改时间为YYYYMMDDHHMMSS格式
for /f "skip=1 tokens=1" %%a in ('wmic datafile where name^="%file2:\=\\%" get lastmodified') do (
    if not "%%a"=="" set "time2=%%a"
)
set "time2=!time2:~0,4!!time2:~4,2!!time2:~6,2!!time2:~8,2!!time2:~10,2!!time2:~12,2!"

:: 时间对比并执行复制
if !time2! gtr !time1! (
    echo File2更新,启动robocopy复制...
    robocopy "C:\temp" "C:\usr" "File2" /XO /NFL /NDL /NJH /NJS
    echo 复制完成
) else (
    echo File2未更新,无需执行复制
)

endlocal
pause

关键细节说明

  • wmic datafile命令返回的时间格式为标准UTC格式,不受系统区域设置影响,解决了dir命令因日期格式差异导致的识别问题
  • 路径中的反斜杠需转换为双反斜杠(\→\\),这是wmic命令的路径格式要求
  • enabledelayedexpansion用于确保循环内的变量能即时更新,避免取值错误
  • robocopy参数说明:
    • /XO:仅复制比目标文件新的文件
    • /NFL//NDL//NJH//NJS:关闭文件列表、目录列表、作业头、作业摘要输出,简化控制台信息

内容的提问来源于stack exchange,提问作者Todd G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 21:15:47