从R执行批处理文件时出现问题

时间:2018-10-03 13:49:51

标签: r batch-file shell-exec

我正在R中创建一个函数,在该函数的一个步骤中,我运行了一个批处理文件,该批处理文件又运行了一个不同的程序,该程序创建了我想在我的函数中读取的文件。

我正在使用shell.exec运行批处理文件,并且运行良好,问题是要从程序输出中读取的代码的下一行被批处理文件崩溃了,因为它没有已创建。

所以我第一次调用函数时遇到错误,但是如果我再次调用它,它将运行正常。下面的代码示例:基本上会发生什么,当调用该函数时,我收到一条错误消息,说... / bat_output.txt不存在,因为该批处理文件尚未运行,但是当我再次调用该函数时,效果很好。

.topnav a:active, .topnav a:visited {
  outline: none !important;
}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

shell.exec在脚本在后台运行时立即返回。第一次找不到bat_output.txt的原因可能是脚本尚未完成。 shell.exec不能让您等待或提供任何信息来确定该进程是否仍在运行,因此它可能不是最好的工具。

替代品:

system("cmd /c run.bat")
system2("cmd", c("/c", "run.bat"))

意识到,如果您引用其他路径,则可能希望/需要normalizePath和/或dQuote进入这些命令。 (R的system*命令不利于参数形成。)

相关问题