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

如何用PowerShell循环复制Excel文件并按日期递增重命名?

PowerShell批量复制文件并递增日期文件名

核心实现脚本

# 配置参数
$originalFile = "FileName 12.14.2022.xlsx"
$daysToGenerate = 5  # 改成你需要生成的天数

# 提取文件名里的基础名称和日期
$fileNamePattern = "(.*?) (\d{2}\.\d{2}\.\d{4})\.xlsx"
if ($originalFile -match $fileNamePattern) {
    $baseName = $matches[1]
    $dateStr = $matches[2]
    
    # 把日期字符串转成DateTime对象(指定格式避免区域设置坑)
    $currentDate = [DateTime]::ParseExact($dateStr, "MM.dd.yyyy", $null)
    
    # 循环生成对应日期的文件副本
    for ($i = 0; $i -lt $daysToGenerate; $i++) {
        $newDate = $currentDate.AddDays($i)
        $newDateStr = $newDate.ToString("MM.dd.yyyy")
        $newFileName = "$baseName $newDateStr.xlsx"
        
        # 执行复制,-Force可以覆盖已存在的同名文件
        Copy-Item -Path $originalFile -Destination $newFileName -Force
        Write-Host "已生成: $newFileName"
    }
} else {
    Write-Error "没从文件名里找到符合MM.DD.YYYY格式的日期,请检查文件名结构"
}

关键细节说明

  • 参数调整:直接修改$originalFile指定源文件路径(如果不在脚本同目录,要写全路径,比如C:\files\FileName 12.14.2022.xlsx),$daysToGenerate设置要生成的未来天数。
  • 日期解析:用ParseExact指定固定格式MM.dd.yyyy转换日期,避免系统区域设置导致的解析失败(比如部分系统默认是日/月/年格式,会把12.14当成无效日期报错)。
  • 正则匹配:(.*?) (\d{2}\.\d{2}\.\d{4})\.xlsx会精准拆分文件名的基础部分和日期部分,兼容带空格的文件名。

常见报错排查

之前报错大概率是这几个原因:

  • 没指定日期解析格式,系统用默认区域格式解析导致失败;
  • 正则表达式没匹配到正确的日期段,比如文件名格式不符合名称 MM.DD.YYYY.xlsx的结构;
  • 源文件路径错误,脚本找不到要复制的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:15:56