Функция R, чтобы определить, запущено ли другое приложение - PullRequest
2 голосов
/ 18 мая 2019

У меня есть скрипт R, который читает файл из моей синхронизированной папки OneDrive. Файл содержит данные с удаленного компьютера, которые обновляются ежечасно. Я запускаю скрипт R ежедневно. Иногда я забываю открыть OneDrive для синхронизации файлов перед запуском сценария R. Как спросить R из моего скрипта, работает ли OneDrive (или другое программное обеспечение)? Использование Windows 7/10 и R 3.5.1.

Кроме того, существует ли обобщенная команда для определения из сценария R, запущено ли приложение XYZ?

1 Ответ

8 голосов
/ 18 мая 2019

В Windows запустите это. Если OneDrive запущен, то task будет содержать строку информации с подстрокой OneDrive.exe; в противном случае эта подстрока не будет присутствовать.

task <- shell('tasklist /fi "imagename eq OneDrive.exe" /nh /fo csv', intern = TRUE)
grepl("OneDrive.exe", task) # returns TRUE if OneDrive running; else FALSE

Это можно обобщить, выделив имя изображения:

imageName <- "OneDrive.exe" # change this line
cmd <- sprintf('tasklist /fi "imagename eq %s" /nh /fo csv', imageName)
task <- shell(cmd, intern = TRUE)
grepl(imageName, task)

Альтернативно используйте schtasks вместо tasklist, используйте taskscheduler_ls() в пакете taskscheduleR или смотрите возвращение командной строки из списка задач Windows .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...