windows中的R自动任务调度:如何使用外部函数
R automatic task scheduling in windows: how to use external functions
我在 windows 中有一个计划任务要 运行 一个 R 程序 ("ftp.R")
经过多次尝试,阅读了很多SO文献,我发现要让它正常工作的唯一方法是将这段代码写入.bat文件:
@ECHO OFF
RSCRIPT ftp.R
当我尝试使用我在其他 R 程序中拥有的函数时,除了 wqith 之外一切正常。
例如,在 "ftp.R" 程序中我有这段代码:
source("//BCN-01/Server/R/Main/Production/Check_Integrity.R")
在 "Check_Integrity.R" 程序中我有一些函数需要在 "ftp.R" 中使用。
问题是,如果我手动执行.bat文件,没有问题,而且"ftp.R" 运行s完美。但是如果我 运行 完全相同的 .bat 文件但是从任务调度程序 "ftp.R" 无法找到外部函数。
(我正在 运行 在 Windows Server 2012 中编写代码)
手动批处理/使用调度程序 运行 之间的一个很大区别是调度程序以 system32 文件夹作为工作目录启动脚本。因此,将以下行添加到批处理文件中可能就足够了:CD %~dp0
.
另一点是调度程序运行将您的批处理作为不同的用户。因此,您(您的用户帐户)有可能可以访问 //BCN-01/Server/R/Main/Production/ 而系统用户调度程序 运行 您的脚本却没有。您还可以尝试告诉调度程序 运行 脚本与您在 运行 手动成功登录时使用的相同用户登录。
终于弄明白哪里出了问题:
所有路径都必须定义为绝对路径:映射单元无效。
虽然我已经知道了(感谢我在 SO 中阅读的一些帖子),但我错过了映射到 'Check_Integrity.R' 中的一个函数的路径。
我在 windows 中有一个计划任务要 运行 一个 R 程序 ("ftp.R")
经过多次尝试,阅读了很多SO文献,我发现要让它正常工作的唯一方法是将这段代码写入.bat文件:
@ECHO OFF
RSCRIPT ftp.R
当我尝试使用我在其他 R 程序中拥有的函数时,除了 wqith 之外一切正常。
例如,在 "ftp.R" 程序中我有这段代码:
source("//BCN-01/Server/R/Main/Production/Check_Integrity.R")
在 "Check_Integrity.R" 程序中我有一些函数需要在 "ftp.R" 中使用。
问题是,如果我手动执行.bat文件,没有问题,而且"ftp.R" 运行s完美。但是如果我 运行 完全相同的 .bat 文件但是从任务调度程序 "ftp.R" 无法找到外部函数。
(我正在 运行 在 Windows Server 2012 中编写代码)
手动批处理/使用调度程序 运行 之间的一个很大区别是调度程序以 system32 文件夹作为工作目录启动脚本。因此,将以下行添加到批处理文件中可能就足够了:CD %~dp0
.
另一点是调度程序运行将您的批处理作为不同的用户。因此,您(您的用户帐户)有可能可以访问 //BCN-01/Server/R/Main/Production/ 而系统用户调度程序 运行 您的脚本却没有。您还可以尝试告诉调度程序 运行 脚本与您在 运行 手动成功登录时使用的相同用户登录。
终于弄明白哪里出了问题:
所有路径都必须定义为绝对路径:映射单元无效。
虽然我已经知道了(感谢我在 SO 中阅读的一些帖子),但我错过了映射到 'Check_Integrity.R' 中的一个函数的路径。