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

如何用Groovy脚本按动态日期区间规则生成指定格式文件名

Groovy动态日期区间文件重命名解决方案

核心判断逻辑

无需每年手动维护日期区间,仅通过运行当日的日字段判断即可实现永久生效:

  • 当日日期的日≥15:使用当前月作为标识月份
  • 当日日期的日<15:使用上月作为标识月份
    该逻辑自动处理跨月、跨年场景,比如2023年1月5日运行时,自动取2022年12月作为标识月份。

完整可运行脚本

import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.io.File

// 配置项,可根据实际需求修改
def FILE_PREFIX = "XYZ"
def FIXED_FLAG = "P1" // 示例中的固定标识P1,可调整
def SCAN_DIR = new File("./") // 扫描文件的目录,默认当前脚本运行目录
def RANDOM_SUFFIX_LENGTH = 3 // 示例文件名末尾的3位随机数长度,可调整

// 1. 获取当前日期
LocalDate today = LocalDate.now()

// 2. 计算标识月份
LocalDate markMonth = today.dayOfMonth >= 15 ? today : today.minusMonths(1)

// 3. 格式化标识字符串:APR21 格式(月份大写缩写+两位年份)
def monthShort = markMonth.month.getDisplayName(java.time.format.TextStyle.SHORT, Locale.US).toUpperCase()
def yearShort = markMonth.format(DateTimeFormatter.ofPattern("yy"))
def markStr = "${monthShort}${yearShort}"

// 4. 生成时间后缀:示例格式为yyyyMMdd+3位随机数
def dateStr = today.format(DateTimeFormatter.ofPattern("yyyyMMdd"))
def randomSuffix = new Random().nextInt(10**RANDOM_SUFFIX_LENGTH).toString().padLeft(RANDOM_SUFFIX_LENGTH, '0')
def timeSuffix = "${dateStr}${randomSuffix}"

// 5. 生成最终文件名
def finalFileName = "${FILE_PREFIX}_${FIXED_FLAG}_${markStr}_${timeSuffix}.csv"

// 6. 扫描匹配前缀的文件并重命名
def targetFiles = SCAN_DIR.listFiles().findAll { file ->
    file.isFile() && file.name.startsWith(FILE_PREFIX) && file.name.endsWith(".csv")
}

if (targetFiles.size() == 0) {
    println "未找到匹配前缀的CSV文件"
    return
}

// 默认取第一个匹配的文件,如有多个可自行调整逻辑
File originFile = targetFiles[0]
if (originFile.renameTo(new File(SCAN_DIR, finalFileName))) {
    println "文件重命名成功:${originFile.name} -> ${finalFileName}"
} else {
    println "文件重命名失败,请检查权限或文件是否被占用"
}

配置调整说明

  • 如果示例中的P1是动态值,可修改FIXED_FLAG变量的赋值逻辑
  • 如果末尾的20210425777是原文件携带的流水号,可直接从原文件名中提取,替换掉随机数生成逻辑
  • 扫描目录、文件前缀、后缀格式均可根据实际业务调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:45:05