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

如何用R创建ppt-01至ppt-48文件夹并迁移对应参与者文件

解决方案

1. 正确生成并创建目标文件夹

你之前的代码存在两个问题:一是生成的文件夹名称格式不对(比如10会变成ppt-010而非ppt-10),二是dir.create无法直接处理lapply返回的列表。以下是修正后的代码:

setwd("P:/data")

# 生成格式统一的文件夹名称:ppt-01 到 ppt-48
folder_names <- sprintf("ppt-%02d", 1:48)

# 循环创建文件夹,先判断是否已存在避免重复创建报错
for(folder in folder_names) {
  if(!dir.exists(folder)) {
    dir.create(folder)
  }
}

2. 匹配文件并移动到对应文件夹

接下来通过正则提取文件名中的PPT编号,将文件移动到对应文件夹:

# 获取当前目录下所有文件的完整路径
all_files <- list.files(full.names = TRUE)

# 循环处理每个文件
for(file in all_files) {
  # 从文件名中提取PPT编号(示例匹配"XX01_040_xxx6_9"中的"040")
  # 若你的编号是两位(比如01),把正则里的\\d{3}改成\\d{2}
  ppt_num <- sub(".*_(\\d{3})_.*", "\\1", basename(file))
  
  # 转换为整数并生成目标文件夹名称
  target_folder <- sprintf("ppt-%02d", as.integer(ppt_num))
  
  # 确认目标文件夹存在后移动文件
  if(dir.exists(target_folder)) {
    file.rename(from = file, to = file.path(target_folder, basename(file)))
  }
}

关键细节说明

  • sprintf("ppt-%02d", x):自动为1-9的数字补前导零,确保文件夹名称格式统一。
  • 正则表达式.*_(\\d{3})_.*:精准匹配文件名中两个下划线之间的三位数字编号,可根据实际文件名结构调整。
  • file.path():生成跨系统兼容的文件路径,避免Windows/Linux路径分隔符问题。
  • 加入dir.exists()判断:防止因编号错误或文件夹未创建导致的运行报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:07:22