尝试在 R 的命令提示符请求中保留双引号
Trying to keep double quotes inside the command prompt request from R
我正在查看 pdf 文件的数量,目的是将它们转换为文本。我的脚本目前看起来像这样:
setwd("test")
dest<-getwd()
#creating vector
myfiles <- list.files(path = dest, pattern = "pdf", full.names = TRUE)
#removing spaces from file names
sapply(myfiles, FUN = function(i){
file.rename(from = i, to = paste0(dirname(i), "/", gsub(" ", "", basename(i))))
})
#recreating vectors to renamed files
myfiles <- list.files(path = dest, pattern = "pdf", full.names = TRUE)
#starting converter
sapply(myfiles, function(i) system2(paste("C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe",i), wait = FALSE))
这会导致以下消息:
Warning message:
running command '"C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe C:/Folder/Containing/The Test/Pdf.pdf"' had status 127
根据我的理解,这是由于中间缺少两个双引号造成的,如下所示:
'"C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe**" "**C:/Folder/Containing/The Test/Pdf.pdf"'
但是,在网上花费数小时后,我无法找到一种在不完全破坏表达式的情况下将这两个双引号放入其中的方法。 运行 解决方案要么使用 cat,我不能这样做,因为我不想输出文本,要么使用 ANSII,R 直接引用它而不根据需要对其进行转换。真希望能在这里找到一些答案。
编辑:最终解决方案只需要更改最后一行。转换后的行如下所示:
sapply(myfiles, function(i) system2("C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe", args =paste0('"',i,'"',collapse = ""), wait = FALSE))
感谢您的帮助!
system2
允许您提供传递给系统命令的附加参数。以下可能有效:
sapply(myfiles, function(i) system2("C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe", args = i, wait = FALSE))
错误似乎出在使用 system2
命令打开文件的方式中。实际上,文件名可以作为 args
传递给函数 system2
。
修改后的代码可以是:
sapply(myfiles, function(i) system2(
"C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe",
args = i, wait = FALSE))
我正在查看 pdf 文件的数量,目的是将它们转换为文本。我的脚本目前看起来像这样:
setwd("test")
dest<-getwd()
#creating vector
myfiles <- list.files(path = dest, pattern = "pdf", full.names = TRUE)
#removing spaces from file names
sapply(myfiles, FUN = function(i){
file.rename(from = i, to = paste0(dirname(i), "/", gsub(" ", "", basename(i))))
})
#recreating vectors to renamed files
myfiles <- list.files(path = dest, pattern = "pdf", full.names = TRUE)
#starting converter
sapply(myfiles, function(i) system2(paste("C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe",i), wait = FALSE))
这会导致以下消息:
Warning message:
running command '"C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe C:/Folder/Containing/The Test/Pdf.pdf"' had status 127
根据我的理解,这是由于中间缺少两个双引号造成的,如下所示:
'"C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe**" "**C:/Folder/Containing/The Test/Pdf.pdf"'
但是,在网上花费数小时后,我无法找到一种在不完全破坏表达式的情况下将这两个双引号放入其中的方法。 运行 解决方案要么使用 cat,我不能这样做,因为我不想输出文本,要么使用 ANSII,R 直接引用它而不根据需要对其进行转换。真希望能在这里找到一些答案。
编辑:最终解决方案只需要更改最后一行。转换后的行如下所示:
sapply(myfiles, function(i) system2("C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe", args =paste0('"',i,'"',collapse = ""), wait = FALSE))
感谢您的帮助!
system2
允许您提供传递给系统命令的附加参数。以下可能有效:
sapply(myfiles, function(i) system2("C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe", args = i, wait = FALSE))
错误似乎出在使用 system2
命令打开文件的方式中。实际上,文件名可以作为 args
传递给函数 system2
。
修改后的代码可以是:
sapply(myfiles, function(i) system2(
"C:/Program Files/Wondershare/PDFelement 6 Professional/PDFelement.exe",
args = i, wait = FALSE))