【问题标题】:How to run R script through multiple directories via windows Task Scheduler如何通过 Windows 任务计划程序通过多个目录运行 R 脚本
【发布时间】:2023-03-30 00:20:01
【问题描述】:

我正在尝试通过 Windows 任务计划程序在 R 中自动执行一些报告。问题是我不断收到 0x1 错误代码,我相信这是因为自动化脚本使用 R 中的 source() 函数来调用不在同一目录中的其他脚本。

我尝试创建一个 .bat 文件,但遇到了同样的问题。我的用户也确实拥有安全权限。

@echo off 
"C:\Program Files\R\R-3.5.2\bin\Rscript.exe" "C:\Users\me\data\report\file.R"
pause

我也试过了:

@echo off 
"C:\Program Files\R\R-3.5.2\bin\Rscript.exe" -e"source('C:/Users/me/data/report/file.R')"

有谁知道如何自动化一个会通过多个目录的脚本?还是我真的必须克隆这些脚本并将它们全部放在同一个文件夹中只是为了自动化?

【问题讨论】:

  • 也许您可以在 file.R 中使用 setwd() 设置正确的工作目录 - 您正在调用的脚本?或者source 使用您要加载的文件的绝对路径。
  • 你有不同的反斜杠是有原因的吗? R 可能对格式错误的反斜杠很敏感。

标签: r windows scheduled-tasks cron-task taskscheduler


【解决方案1】:

您不必将它们全部放在同一个目录中。

我创建了一个脚本,该脚本调用另一个目录中的另一个脚本,并使用taskscheduleR 创建了一个任务。

它对我有用,所以我认为问题与 source() 无关。

不过,您的问题很难重现。但这可能与管理员角色有关。如果有的话,我建议您与您的 IT 部门联系。

source("C:/Users/ADMFIWA/Documents/task-test-other/other-summary.R")

library(taskscheduleR)
taskscheduler_create(taskname = "test",
                     rscript = "C:/Users/ADMFIWA/Documents/task-test/summary.R", 
                     schedule = "ONCE", starttime = format(Sys.time() + 62, "%H:%M"))
#> [1] "SUCCESS: The scheduled task \"test\" has successfully been created."

reprex package (v0.2.0) 于 2019 年 3 月 12 日创建。

【讨论】:

  • 在您的示例中,您在计划任务之前使用 source ,但是您在 taskscheduler_create() 函数中定义的 rscript 中是否有 source() 代码?我想知道这是否有显着差异。
  • 是的,source() 是我在 summary.R 脚本中使用的唯一代码行。
  • 我刚刚重新加载了我的脚本并按照您的建议检查了我的用户角色,并且它有效。感谢 source() 的澄清!
  • 太好了,很高兴为您提供帮助!
猜你喜欢
  • 1970-01-01
  • 2015-08-08
  • 2015-10-02
  • 1970-01-01
  • 1970-01-01
  • 2013-08-18
  • 1970-01-01
  • 1970-01-01
  • 2017-06-20
相关资源
最近更新 更多