在运行提示符下的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的正确咒语。
有什么想法吗?
答案 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")