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

求Batch Script:仅复制同ID同周最高版本的目标文件

批量复制同ID同周最新版本文件的批处理脚本

现有文件命名遵循[ID]_[Week]_[Version]_[Othertext]格式,同一ID与Week组合下,Version数值越大对应文件越新。之前的做法是全量复制所有相关文件后手动删除旧版,以下脚本可直接复制每个ID+Week组里的最新版本文件:

@echo off
setlocal enabledelayedexpansion

:: 源文件夹路径,按需修改
set "sourceDir=\\server\folder\subfolder"
:: 目标文件夹路径,按需修改
set "targetDir=C:\folder"

:: 自动创建目标文件夹(不存在时)
if not exist "%targetDir%" mkdir "%targetDir%"

:: 遍历源文件夹下符合命名规则的文件
for /f "delims=" %%f in ('dir /b /a-d "%sourceDir%\*_*_*_*.csv"') do (
    :: 拆分文件名,提取ID、Week、Version字段
    for /f "tokens=1,2,3 delims=_" %%a in ("%%~nf") do (
        set "currentID=%%a"
        set "currentWeek=%%b"
        set "currentVer=%%c"
        set "key=!currentID!_!currentWeek!"
        
        :: 记录每个ID+Week组合的最高版本文件
        if not defined maxVer[!key!] (
            set "maxVer[!key!]=!currentVer!"
            set "latestFile[!key!]=%%f"
        ) else (
            if !currentVer! gtr !maxVer[!key!]! (
                set "maxVer[!key!]=!currentVer!"
                set "latestFile[!key!]=%%f"
            )
        )
    )
)

:: 执行最新文件的复制操作
for /f "tokens=2 delims==" %%v in ('set latestFile[') do (
    copy "%sourceDir%\%%v" "%targetDir%\"
    echo 已复制最新文件: %%v
)

echo 所有最新文件复制完成
pause

关键说明

  • 启用enabledelayedexpansion实现循环内变量的实时更新
  • 用ID_Week作为唯一标识,对比记录每个组的最高Version对应的文件
  • 可根据实际需求调整:
    • 修改sourceDir和targetDir为真实路径
    • 若文件后缀不是csv,替换dir命令中的*.csv为对应后缀(或*.*匹配所有格式)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 23:29:59