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

提取各子文件夹中最新版本命名的Zip文件技术需求

没问题!既然所有文件的时间戳都一致,那咱们只能靠文件名里的修订号来判断哪个是最新版本。下面给你几个不同平台的实用方案,挑你顺手的来:

方案1:Windows 平台用 PowerShell 脚本

这个脚本会自动遍历每个子文件夹,提取文件名里的修订号,找出最大的那个版本,还能把它复制到指定的目标目录(你也可以改成移动或者其他操作):

# 替换成你的根文件夹路径
$rootPath = "C:\Your\Root\Folder"
# 可选:替换成你想存放最新版本的目标路径
$targetPath = "C:\Your\Target\Folder"
New-Item -ItemType Directory -Path $targetPath -Force | Out-Null

# 遍历所有子文件夹
Get-ChildItem -Path $rootPath -Directory | ForEach-Object {
    $currentFolder = $_
    # 筛选符合格式的zip文件,提取修订号
    $zipFiles = Get-ChildItem -Path $currentFolder.FullName -Filter "*.zip" | Where-Object {
        $_.Name -match '^doc\d+-r(\d+)\.zip$'
    }

    if (-not $zipFiles) {
        Write-Warning "文件夹 $($currentFolder.Name) 里没找到符合格式的zip文件"
        return
    }

    # 按修订号从大到小排序,取第一个就是最新版
    $latestFile = $zipFiles | Sort-Object { [int]$matches[1] } -Descending | Select-Object -First 1

    Write-Host "找到 $($currentFolder.Name) 的最新版本:$($latestFile.Name)"
    # 复制到目标目录,想移动的话把Copy-Item改成Move-Item
    Copy-Item -Path $latestFile.FullName -Destination $targetPath -Force
}

使用提示:

  1. 把脚本里的路径换成你实际的文件夹路径
  2. 先注释掉最后一行的Copy-Item命令,跑一遍看看输出的文件是不是你要的,确认没问题再执行复制操作

方案2:Linux/macOS 平台用 Bash 脚本

适合类Unix系统的用户,逻辑和上面类似:

#!/bin/bash

# 替换成你的根文件夹路径
ROOT_DIR="/your/root/folder"
# 可选:替换成目标路径
TARGET_DIR="/your/target/folder"
mkdir -p "$TARGET_DIR"

# 遍历每个子文件夹
for folder in "$ROOT_DIR"/*/; do
    cd "$folder" || continue
    folder_name=$(basename "$folder")
    
    # 筛选符合格式的zip,按修订号排序后取最后一个(最大的)
    latest_zip=$(ls *.zip | grep -E '^doc[0-9]+-r[0-9]+\.zip$' | sort -t 'r' -k2 -n | tail -n1)
    
    if [ -z "$latest_zip" ]; then
        echo "警告:文件夹 $folder_name 里没找到符合格式的zip文件"
        continue
    fi
    
    echo "找到 $folder_name 的最新版本:$latest_zip"
    # 复制到目标目录,移动的话把cp改成mv
    cp "$latest_zip" "$TARGET_DIR/"
done

使用提示:

  1. 给脚本加执行权限:chmod +x extract_latest.sh
  2. 同样建议先注释复制命令,验证结果后再执行

方案3:跨平台用 Python 脚本

如果你熟悉Python,这个脚本在Windows、Linux、macOS上都能跑:

import os
import re
from shutil import copyfile

# 替换成你的根文件夹路径(Windows用双反斜杠:"C:\\Your\\Root\\Folder")
root_dir = "/your/root/folder"
# 可选:替换成目标路径
target_dir = "/your/target/folder"

os.makedirs(target_dir, exist_ok=True)

# 遍历所有子文件夹
for folder_name in os.listdir(root_dir):
    folder_path = os.path.join(root_dir, folder_name)
    if not os.path.isdir(folder_path):
        continue
    
    zip_info = []
    for filename in os.listdir(folder_path):
        if filename.endswith(".zip"):
            # 匹配文件名,提取修订号
            match_result = re.match(r'^doc\d+-r(\d+)\.zip$', filename)
            if match_result:
                rev_number = int(match_result.group(1))
                zip_info.append((rev_number, filename))
    
    if not zip_info:
        print(f"警告:文件夹 {folder_name} 里没找到符合格式的zip文件")
        continue
    
    # 按修订号降序排序,取第一个
    zip_info.sort(reverse=True, key=lambda x: x[0])
    latest_rev, latest_filename = zip_info[0]
    latest_file_path = os.path.join(folder_path, latest_filename)
    
    print(f"找到 {folder_name} 的最新版本:{latest_filename}")
    # 复制到目标目录,移动的话用shutil.move
    copyfile(latest_file_path, os.path.join(target_dir, latest_filename))

通用注意事项:

  • 如果你的文件名格式有变化(比如doc后面是字母,或者修订号的分隔符不是r),需要调整脚本里的正则表达式或匹配规则
  • 测试时优先验证结果,避免误操作覆盖文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:50:53