R函数确定是否正在运行另一个应用程序

时间:2019-05-18 15:45:51

标签: r

我有一个R脚本,该脚本从同步的OneDrive文件夹中读取文件。该文件包含来自远程计算机的数据,该数据每小时更新一次。我每天运行R脚本。有时,在运行R脚本之前,我忘记打开OneDrive来同步文件。 如何从脚本中询问R是否正在运行OneDrive(或其他软件)?使用Windows 7/10和R 3.5.1。

此外,是否有通用命令可从R脚本中确定应用程序XYZ是否正在运行?

1 个答案:

答案 0 :(得分:7)

在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软件包中使用taskscheduler_ls()或参见returning command line from windows tasklist