如何在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
相关产品推荐
相关产品推荐

