从R运行Windows命令

时间:2016-09-08 01:28:58

标签: r windows shell

在运行提示符下的Windows 7中,此命令成功启动带有可选输入文件的.exe;#34; test2.dat"

c:/Program Files (x86)/IEUBKwin1_1 Build11/IEUBKwin32.exe k:/Project/EPA.Pb.IEUBK/batch.io/input/test2.dat

我想在R内做同样的事情。

在R中,此命令成功启动相同的.exe

shell.exec("c:/Program Files (x86)/IEUBKwin1_1 Build11/IEUBKwin32.exe")

但是我一直无法在R中找到可以使用可选输入文件启动.exe的解决方案。我查看了shell()shell.exec()system()但我找不到将可选输入文件传递给.exe的正确咒语。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

键入普通cmd.exe - promt包含C:\Program Files (x86)\...中的空格的命令不起作用:

The Command "C:\Program" could not be found.

使用双引号键入相同的命令确实有效。 E.g:

"C:\Program Files (x86)\7-Zip\7z" -a ...

要使其在R中工作,您可以使用单引号(')来标记R字符串和双引号(")以获取命令本身。实际上,您可以使用三种不同的引号(反引号是第三个引号`see here for more information)。或者你使用@Frank答案中提到的转义。

system('"C:/Program Files (x86)/IEUBKwin1_1 Build11/IEUBKwin32.exe" k:/Project/EPA.Pb.IEUBK/batch.io/input/test2.dat')

此外,?system不仅提到在窗口中使用shell,还提到system2作为替代:

  

...这意味着不能假设重定向或管道在system中有效(重定向有时会发生,但我们已经看到它在Windows安全补丁后停止工作的情况),{{1必须在Windows上使用(或system2)。

但是对我来说shell完全正常,不使用管道或重定向。

答案 1 :(得分:0)

shell.exec()用于打开操作系统中关联的文件。

在你的情况下,应该首选shell命令,但是你需要处理文件名中的空格并掩盖配额标记。

请尝试:

shell("\"c:/Program Files (x86)/IEUBKwin1_1 Build11/IEUBKwin32.exe\" k:/Project/EPA.Pb.IEUBK/batch.io/input/test2.dat")