我有一个R脚本,该脚本从同步的OneDrive文件夹中读取文件。该文件包含来自远程计算机的数据,该数据每小时更新一次。我每天运行R脚本。有时,在运行R脚本之前,我忘记打开OneDrive来同步文件。 如何从脚本中询问R是否正在运行OneDrive(或其他软件)?使用Windows 7/10和R 3.5.1。
此外,是否有通用命令可从R脚本中确定应用程序XYZ是否正在运行?
答案 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。