在窗口中的for循环中重命名

时间:2014-01-11 15:05:42

标签: r for-loop rename file-rename

重命名功能不起作用,我试过以下

for (i in 1:length(file_list))
    {
         dest=paste("D:/R/Hr/New1",file_list[i],sep="/")
         exe <- "C:\\Program Files\\xpdfbin-win-3.03\\bin32\\pdftotext.exe"
         system(paste("\"", exe, "\" \"", dest, "\"", sep = ""), wait = F)
         filetxt <- sub(".pdf", ".txt", dest)
         fdest=paste("D:/R/Hr/New2/",file_list[i],sep="")
         fdest <- sub(".pdf", ".txt",fdest)
         #my.file.rename(filetxt,fdest)
         file.rename(filetxt,fdest)
    }

但是没有重命名的单个文件没有循环工作正常

        i=1
> dest=paste("D:/R/Hr/New1",file_list[i],sep="/")
>          exe <- "C:\\Program Files\\xpdfbin-win-3.03\\bin32\\pdftotext.exe"
>          system(paste("\"", exe, "\" \"", dest, "\"", sep = ""), wait = F)
>          filetxt <- sub(".pdf", ".txt", dest)
>          fdest=paste("D:/R/Hr/New2/",file_list[i],sep="")
>          fdest <- sub(".pdf", ".txt",fdest)
>          #my.file.rename(filetxt,fdest)
>          file.rename(filetxt,fdest)
[1] TRUE

只是不知道为什么会出现这个问题,我怎么能摆脱这个问题,同样的o / p也有这个功能

my.file.rename <- function(from, to) {
  todir <- dirname(to)
  if (!isTRUE(file.info(todir)$isdir)) dir.create(todir, recursive=TRUE)
  file.rename(from = from,  to = to)
}

为什么我没有预期在for循环中重命名,任何帮助谢谢

1 个答案:

答案 0 :(得分:1)

不需要任何循环,它似乎在Mac上正常工作:

file_list = list.files("~/test/",pattern="*.pdf",full.names=TRUE)
fdest= sub(".pdf", ".txt",file_list)
file.rename(file_list,fdest)
print(list.files("~/test/",pattern="*.pdf",full.names=TRUE))
print(list.files("~/test/",pattern="*.txt",full.names=TRUE))

我的猜测是系统调用中的wait = F允许代码在您的可执行文件生成文件之前继续(即使它确实存在,也可能被锁定)。尝试将其设置为true并在完成对pdftotext.exe的所有调用后运行此代码