使用R语言批量重命名Windows文件夹.dts文件失败求助
解决Windows下R脚本重命名.dts文件无效的问题
我明白你的困扰——脚本显示执行成功,但文件夹里的文件名压根没变化,这确实让人头疼。咱们来一步步解决这个问题:
问题根源
你的脚本里list.files()默认只返回纯文件名(比如"20172303.dts"),而不是文件的完整路径。当你调用file.rename()时,R会在当前工作目录(可以用getwd()命令查看)里找这些文件并尝试重命名,而不是你指定的C:/my file path/文件夹。这就导致你看似执行成功,其实根本没操作到目标文件。
修正后的完整脚本
把下面的代码替换你原来的脚本,就能正确修改目标文件夹里的文件名了:
# 定义文件路径(注意路径里的空格没问题,R支持正斜杠) filepath <- "C:/my file path/" # 获取带完整绝对路径的.dts文件列表,关键是加上full.names=TRUE myfile_dts_2019 <- list.files(path = filepath, pattern = "\\.dts$", full.names = TRUE) # 这里pattern用\\.dts$是为了精准匹配后缀为.dts的文件,避免匹配到比如xxx.dts.txt这类文件 # 打印完整路径的文件列表,确认是否正确获取到目标文件 print(myfile_dts_2019) # 提取文件名部分,用于替换年份 file_names <- basename(myfile_dts_2019) # 将文件名中的2017替换为2019 new_file_names <- stringr::str_replace(file_names, "2017", "2019") # 组合新的完整文件路径,用file.path避免手动拼接路径的错误 newfiles <- file.path(filepath, new_file_names) # 执行重命名,并保存结果 rename_result <- file.rename(myfile_dts_2019, newfiles) # 检查重命名结果 if (all(rename_result)) { cat("太棒了!所有.dts文件都成功重命名为2019开头啦~\n") } else { cat("有部分文件重命名失败,失败的文件路径如下:\n") print(myfile_dts_2019[!rename_result]) }
额外注意事项
如果修改后还是没生效,你可以排查这几个点:
- 文件被占用:先关闭所有打开这些.dts文件的软件(比如你提到的要打开文件的其他程序),Windows会锁定正在使用的文件,导致无法重命名。
- 权限问题:如果目标文件夹在C盘系统目录下,右键点击R/RStudio,选择「以管理员身份运行」,再执行脚本试试。
- 刷新文件夹:有时候Windows资源管理器会缓存旧文件名,按F5刷新一下就能看到新名字了。
内容的提问来源于stack exchange,提问作者DanG
相关产品推荐
相关产品推荐

