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

如何在RStudio中将重命名后的.doc文件复制到指定输出文件夹?

批量复制并重命名Word文档到指定文件夹(R实现)

问题背景

现有存放Word文档的文件夹,需将文件名中Fr#后的记录号(如示例中的2046)移至文件名开头,同时将重命名后的文件副本存入指定输出文件夹。原代码使用file.rename()只能移动/重命名文件,无法实现复制需求,涉及3000+条记录。

文件名示例:

  • 原文件名:

species name 2 of 10 [C] 27.Aug.12 [Fr#2046] location name.doc

  • 目标重命名后文件名:

2046 species name 2 of 10 [C] 27.Aug.12 [Fr#2046] location name.doc

解决方案

使用file.copy()替代file.rename()实现文件复制,同时修复路径拼接的潜在问题,加入错误处理保证批量任务稳定运行。

修改后的完整代码

library(stringr)

# 定义源文件夹与目标文件夹路径(末尾加/避免路径拼接错误)
source_path <- "/Users/Documents/RStudio_Docs/Field_Record_Rename/original_folder/"
output_path <- "/Users/Documents/RStudio_Docs/Field_Record_Rename/output_folder/"

# 获取源文件夹下所有文件名(仅返回文件名,不包含完整路径)
file_list <- list.files(source_path, full.names = FALSE)

# 提取每个文件名中的Fr#后缀数字记录号
record_numbers <- str_extract(file_list, "(?<=Fr#)\\d+")

# 生成带记录号前缀的新文件名
new_file_names <- paste(record_numbers, file_list)

# 批量复制并重命名文件,加入错误处理避免单文件失败中断任务
for (i in seq_along(file_list)) {
  source_file_path <- paste0(source_path, file_list[i])
  target_file_path <- paste0(output_path, new_file_names[i])
  
  tryCatch({
    # 复制文件,overwrite=TRUE表示覆盖目标文件夹同名文件,可按需修改
    file.copy(source_file_path, target_file_path, overwrite = TRUE)
    cat("处理完成:", new_file_names[i], "\n")
  }, error = function(e) {
    cat("处理失败:", file_list[i], " | 错误信息:", e$message, "\n")
  })
}

关键说明

  • 路径拼接修正:源/目标路径末尾添加/,避免拼接时出现folderfilename.doc这类无效路径
  • 复制替代移动:file.copy()保留源文件,仅生成副本到目标文件夹,满足需求
  • 错误处理:tryCatch()捕获单个文件的复制异常,确保3000+文件的批量任务不会因个别文件出错而终止
  • 覆盖控制:overwrite = TRUE可根据需求改为FALSE,避免误覆盖目标文件夹已有文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:33:27