Проблемы с запуском командного файла из R

Я создаю функцию в R, и на одном шаге функции я запускаю командный файл, этот пакетный файл, в свою очередь, запускает другую программу, которая создает файлы, которые я затем хочу прочитать в своей функции.

Я использую shell.exec для запуска пакетного файла, и он работает нормально, проблема в том, что следующая строка моего кода, который хочет прочитать в выводе из программы, запускаемой пакетным файлом, вылетает, потому что он еще не был создан,

Поэтому я получаю сообщение об ошибке при первом вызове своей функции, но если я просто вызываю ее снова, она работает нормально. Пример кода ниже: в основном, что происходит, я получаю сообщение об ошибке при вызове функции, говорящее, что... / bat_output.txt не существует, потому что пакетный файл еще не был запущен, но потом, когда я снова вызываю функцию работает нормально.

shell.exec("run.bat")
readout<-read.table("bat_output.txt")

Какие-либо предложения?

1 ответ

Решение

shell.exec немедленно возвращается, когда скрипт работает в фоновом режиме. Причина bat_output.txt не найдено в первый раз, вероятно, что сценарий еще не закончен. shell.exec не дает вам возможности ждать или какой-либо информации, чтобы определить, запущен ли еще процесс, так что это может быть не лучшим инструментом для этого.

Альтернативы:

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

Поймите, что если вы ссылаетесь на другой путь, вы можете / должны normalizePath и / или dQuote это входит в эти команды. (R-х system* Команды плохо при формировании аргументов.)

Другие вопросы по тегам