作者:黃天元,復旦大學博士在讀,熱愛數據科學與R,熱衷推廣R在工業界與學術界的應用。郵箱:[email protected].歡迎合作交流
任務需求:我現在有一個文件夾,文件夾有很多子文件夾。每個子文件夾裡面都有一個pdf文件,我需要把這些pdf全部提取出來放在一個文件夾裡面。
為了完成這個任務,我用了R基本包的批處理函數。
首先,把這些文件的所在路徑進行複製,然後運行下面的代碼:
#請先把下面的步驟寫好,然後複製之後直接運行。 #不要複製了路徑又複製下面的代碼,最後複製到剪貼板的一定是文件的路徑。
FSlash<- function(path = "clipboard") { y <- if (path == "clipboard") { readClipboard() } else { cat("Please enter the path:
") readline() } x <- chartr("", "/", y) writeClipboard(x) return(x) }
FSlash() -> NEED
這樣,我剛才複製的路徑就到了NEED變數裡面。每次都被windows的反斜槓問題麻煩到,終於在https://www.listendata.com/2015/06/convert-backslash-file-path-to-forward.html中找到了解決方案。
然後我想要把這些pdf文件都放到G盤下的temp_pdf文件夾中,我先創建,然後利用循環批量轉移。
#讀取文件夾名稱 dir(NEED) -> folder_names
#創建文件夾 dir.create("G:/temp_pdf")
#利用file.copy函數批量複製粘貼到指定文件夾中 for(i in folder_names){ dir(paste0(NEED,"/",i)) -> folder_files if(length(folder_files) == 1) file.copy(from = paste0(NEED,"/",i,"/",folder_files), to = paste0("G:/temp_pdf/",folder_files)) }
成功完成批處理!