R 系统或 system2 命令使用粘贴或 sprintf 到 运行 bat 文件?
R system or system2 command using paste or sprintf to run bat file?
我有一个 bat 文件,我可以使用以下系统命令从 R 运行:
system('"C:\PROGRA~1\THERMO~1\AFFYME~1\APT-12~1.5\bin\apt-vars.bat" && cd "C:\Users\phyca\Desktop\R7\R7_10-~1" && apt-cel-convert.exe --f text --i --cel-files CEL_FILE.txt')
但是当我尝试自动化我的整个过程时,我无法让它触发。 returns 行没有错误,但它不会触发脚本。
#set apt location
apt_cnvrt <- "C:/Program Files/Thermo Fisher Scientific/Affymetrix Power Tools/APT-1.20.5/bin/apt-vars.bat"
#convert path format
apt_cnvrt <- gsub("/", "\\", apt_cnvrt)
#get short path
apt_cnvrt <- shortPathName(apt_cnvrt)
#store wd
outdir <- getwd()
#create file with list of files in dir
cel_list <- list.files(path = outdir, full.names = F, pattern = ".CEL")
fileConn<-file(paste0(outdir,"/CEL_FILE.txt"))
writeLines(c("cel_files", cel_list), fileConn)
close(fileConn)
#convert path format
outdir <- gsub("/", "\\", outdir)
#get short path
outdir <- shortPathName(outdir)
#set apt command
command <- "apt-cel-convert.exe --f text --i --cel-files CEL_FILE.txt"
#paste variables together to make: system('"C:\Progra~1\Thermo~1\Affyme~1\APT-1.20.5\bin\apt-vars.bat" && cd "C:\Users\me\Desktop\test" && apt-cel-convert.exe --format text --in-place --cel-files CEL_FILE.txt')
path <- noquote(paste0("'\"",apt_cnvrt,"\"", " && cd \"",outdir,"\" && ", command,"'"))
system(path)
路径看起来是这样的,当一切都说完了,它匹配正确工作的命令....但它不会触发脚本:
'"C:\PROGRA~1\THERMO~1\AFFYME~1\APT-12~1.5\bin\apt-vars.bat" && cd "C:\Users\me\Desktop\test" && apt-cel-convert.exe --f text --i --cel-files CEL_FILE.txt'
我尝试了各种版本的 paste、paste0、noquote、sprintf、system、system2、shell...等,但无法让其中任何一个接受变量来触发脚本。
我能够让系统接受以下内容:
system(sprintf("\"%s\" && cd \"%s\" && %s", apt_cnvrt, outdir, command))
只要我在 R studio 中运行,代码现在就可以运行完成。
我有一个 bat 文件,我可以使用以下系统命令从 R 运行:
system('"C:\PROGRA~1\THERMO~1\AFFYME~1\APT-12~1.5\bin\apt-vars.bat" && cd "C:\Users\phyca\Desktop\R7\R7_10-~1" && apt-cel-convert.exe --f text --i --cel-files CEL_FILE.txt')
但是当我尝试自动化我的整个过程时,我无法让它触发。 returns 行没有错误,但它不会触发脚本。
#set apt location
apt_cnvrt <- "C:/Program Files/Thermo Fisher Scientific/Affymetrix Power Tools/APT-1.20.5/bin/apt-vars.bat"
#convert path format
apt_cnvrt <- gsub("/", "\\", apt_cnvrt)
#get short path
apt_cnvrt <- shortPathName(apt_cnvrt)
#store wd
outdir <- getwd()
#create file with list of files in dir
cel_list <- list.files(path = outdir, full.names = F, pattern = ".CEL")
fileConn<-file(paste0(outdir,"/CEL_FILE.txt"))
writeLines(c("cel_files", cel_list), fileConn)
close(fileConn)
#convert path format
outdir <- gsub("/", "\\", outdir)
#get short path
outdir <- shortPathName(outdir)
#set apt command
command <- "apt-cel-convert.exe --f text --i --cel-files CEL_FILE.txt"
#paste variables together to make: system('"C:\Progra~1\Thermo~1\Affyme~1\APT-1.20.5\bin\apt-vars.bat" && cd "C:\Users\me\Desktop\test" && apt-cel-convert.exe --format text --in-place --cel-files CEL_FILE.txt')
path <- noquote(paste0("'\"",apt_cnvrt,"\"", " && cd \"",outdir,"\" && ", command,"'"))
system(path)
路径看起来是这样的,当一切都说完了,它匹配正确工作的命令....但它不会触发脚本:
'"C:\PROGRA~1\THERMO~1\AFFYME~1\APT-12~1.5\bin\apt-vars.bat" && cd "C:\Users\me\Desktop\test" && apt-cel-convert.exe --f text --i --cel-files CEL_FILE.txt'
我尝试了各种版本的 paste、paste0、noquote、sprintf、system、system2、shell...等,但无法让其中任何一个接受变量来触发脚本。
我能够让系统接受以下内容:
system(sprintf("\"%s\" && cd \"%s\" && %s", apt_cnvrt, outdir, command))
只要我在 R studio 中运行,代码现在就可以运行完成。