如何从R导入Windows可执行文件的数据文件?

时间:2018-01-22 22:04:04

标签: r

我正在尝试从R运行Windows可执行文件。我已设法使用以下命令从R打开可执行文件:

class AsyncContextManager:
    async def __aenter__(self):
        await log('entering context')

    async def __aexit__(self, exc_type, exc, tb):
        await log('exiting context')

要运行可执行文件,我需要通过单击“加载设置文件”按钮导入Excel文件(参见下图)。因此,该按钮是可执行文件的一部分。

enter image description here

我怎么能从R?

这样做

我尝试过这个命令,但它不起作用:

system2('cmd', args=c('/c', '"C:/Program Files (x86)/UIFormModel.exe"'))

2 个答案:

答案 0 :(得分:2)

有几点:

  • 通常一个人没有直接在C:\Program Files (X86)下的.exe文件,所以先仔细检查路径名。我怀疑它不是问题,而是如下所示。

  • 请注意下面的引用

  • 您确定该程序接受命令行参数作为其GUI的替代方法吗?你可以从Windows cmd线运行吗?如果没有,你可以写一个autohotkey(参见下面的AutoHotKey部分)或autoit脚本来控制它并从R中启动它。

  • 如果确实接受了参数,请确保程序允许正斜杠 - 如果不使用反斜杠

接受

cmd行参数

如果程序接受命令行参数,请尝试以下代码:

system2("C:/Program Files (x86)/UIFormModel/UIFormModel.exe",  "F:/template_LHS1.xlsx")

另一种方式是:

shell('"C:/Program Files (x86)/UIFormModel/UIFormModel.exe" F:/template_LHS1.xlsx')

例如,使用免费CSVfix我能够运行以下内容并发现它们有效:

system2("C:/Program Files (x86)/CSVfix/CSVfix.exe", "help")

shell('"C:/Program Files (x86)/CSVfix/CSVfix.exe" help')

有关您可能希望使用的其他参数,请参阅?system2?shell

AutoHotkey的

如果程序不接受命令行参数,则此示例AutoHotKey脚本将启动WinMerge,一个用于Windows的免费文件比较GUI,将WinMerge可执行文件与其自身进行比较。这会生成弹出警告,AutoHotKey脚本通过向WinMerge窗口发送Enter键来解除该警告消息。

确保安装了AutoHotKey和WinMerge,下面的脚本位于当前目录中的文本文件test.ahk中,由getwd()给出,然后从R控制台运行:

shell("test.ahk")

这是test.ahk脚本:

exe = "C:\Program Files (x86)\winmerge\winmergeu.exe" 
Run %exe% %exe% %exe%
WinWait WinMerge
; dismiss the dialog warning that both files are the same
Send {Enter}

如果你走这条路线,这个剧本需要以特定于你的程序的方式进行修改或重写。

答案 1 :(得分:1)

我一直在尝试多种替代方案,但我没有用参数成功调用可执行文件。不过,我可以建议使用.bat文件解决方法:

system2("cmd.exe", input='"D:/workspace/execute.bat"')

其中execute.bat可能包含以下内容:

C:/ Program Files(x86)/UIFormModel.exe F:/template_LHS1.xlsx