使用命令行选项从R中运行Windows可执行文件

时间:2013-04-26 23:54:18

标签: r call external executable

我正在尝试使用调用

从R中调用名为AMDIS的Windows程序
system("C:/NIST08/AMDIS32/AMDIS_32.exe /S C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF")

为了在名为/S的文件上执行分析(使用CI23_Q_120828_01.CDF开关指定),但似乎无论我尝试什么文件都没有正确加载,大概是因为选项不会传递。有没有人知道我可能做错了什么?

现在这个命令

  1. 什么都不做,
  2. 弹出AMDIS,但它没有加载我指定的文件
  3. 给我错误

    警告讯息:

  4.   

    运行命令'C:/NIST08/AMDIS32/AMDIS_32.exe / S.   C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF”   状态为65535

    (我不知道是什么导致同一命令的这些不同结果)

    (AMDIS命令行选项在第8页的here中描述)

    干杯,
    汤姆

    编辑:
    发现它与前锋vs反斜杠有关 - 正在运行

    system("C:\\NIST08\\AMDIS32\\AMDIS_32.EXE C:\\Users\\Ento\\Documents\\GCMS\\test_cataglyphis_iberica\\queens\\CI23_Q_120828_01.CDF /S /E")
    

    似乎有效 - 谢谢大家的建议!

1 个答案:

答案 0 :(得分:8)

您听说过bquotenoquotesQuotedQuotequote enquoteQuotes,以及现在见shQuote !!! :-)

这个小函数调用用于格式化要传递给操作系统shell的字符串。就个人而言,我发现我可以卷入逃避地狱的反斜杠,shQuote拯救了我。只需在您选择的命令行上输入字符串('sh'用于Unix,例如bashcsh用于C-shell,'cmd'用于Windows shell)wihtin shQuote它将使用系统格式化来自R的呼叫:

shQuote("C:/NIST08/AMDIS32/AMDIS_32.exe /S C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF" , type = "cmd" )
#[1] "\"C:/NIST08/AMDIS32/AMDIS_32.exe /S C:/Users/Ento/Documents/GCMS/test_cataglyphis_iberica/queens/CI23_Q_120828_01.CDF\""

更一般地说,您可以像这样使用shQuote

system( shQuote( "mystring" , type = c("cmd","sh") ) , ... )