批处理文件奇怪地在R文件的子部分循环

批处理文件奇怪地在R文件的子部分循环,r,batch-file,R,Batch File,我的windows桌面上有一个批处理文件test.bat,包含以下内容: cd /d W:\r\dev\ "C:\Program Files\R\R-3.5.0\bin\i386\Rscript.exe" scripts\some_function.R 执行时,被引用的R脚本some_function.R开始运行,并向控制台输出消息,让我知道它在哪里。但是,它在到达R代码中的某个点后停止,然后重新开始并继续这样做,直到会话自动终止 我检查了R代码,寻找批处理文件为什么会继续返回到开头的指示,

我的windows桌面上有一个批处理文件
test.bat
,包含以下内容:

cd /d W:\r\dev\
"C:\Program Files\R\R-3.5.0\bin\i386\Rscript.exe"  scripts\some_function.R
执行时,被引用的R脚本
some_function.R
开始运行,并向控制台输出消息,让我知道它在哪里。但是,它在到达R代码中的某个点后停止,然后重新开始并继续这样做,直到会话自动终止

我检查了R代码,寻找批处理文件为什么会继续返回到开头的指示,但没有发现任何指示。直接运行(例如,从R studio内部)时,R文件工作正常

我很清楚这一点,但这不是这里发生的事情。我尝试了批处理文件的多个名称,但这似乎无法解决问题

下面是引用文件
中不断重新执行的某些函数.R
中代码的开头:

library(data.table)

dir <- gsub(x= getwd(), pattern = "(.:/r/)(.*)",replacement = "\\1")
envir <- gsub(x= getwd(), pattern = "(.:/r/)(\\w+)",replacement = "\\2")

cat(paste("directory = "),dir,"\n","environment = ",envir,"\n")


##############################################################
# Load System Parameters                                     #
##############################################################

cat("Loading system parameters ...","\n")

sys_param_file_path <- paste0(dir,"shared/files/system/sys_param.csv")
sys_params <- data.table(read.csv(sys_param_file_path, stringsAsFactors = FALSE))
sys_params <- sys_params[param_envir == envir,]

for(i in 1:nrow(sys_params)){
  if(sys_params[i,param_type] == "environment path"){
    sys_params[i,param_val := paste(dir,envir,param_val,sep = "")]
  }
  if(sys_params[i,param_type] == "root path"){
    sys_params[i,param_val := paste(substr(dir,1,nchar(dir)-1),param_val,sep = "")]
  }
}

cat(paste("Loaded",nrow(sys_params),"parameters","\n"))

我遗漏了什么?

无论文件中有什么内容,都会发生这种情况吗?如果脚本只有
cat(“Hello”)
它还会重复吗?我无法复制:双击批处理、在PowerShell中运行等。您能设置一个可复制的示例吗?除此之外,代码的其余部分可能会触发重复调用。也许是
source()
行?在做了一些调查之后,我将问题缩小到
source()
调用,如@Parfait(谢谢!)所示。包含被调用脚本的文件夹中的每个脚本都是源代码,因为此文件夹包含代码所需的脚本。有没有办法不将这个脚本移动到它自己的文件夹(这会稍微扰乱我们的结构)就可以工作?不管文件中有什么,都会发生这种情况吗?如果脚本只有
cat(“Hello”)
它还会重复吗?我无法复制:双击批处理、在PowerShell中运行等。您能设置一个可复制的示例吗?除此之外,代码的其余部分可能会触发重复调用。也许是
source()
行?在做了一些调查之后,我将问题缩小到
source()
调用,如@Parfait(谢谢!)所示。包含被调用脚本的文件夹中的每个脚本都是源代码,因为此文件夹包含代码所需的脚本。有没有办法不将这个脚本移动到它自己的文件夹(这会稍微扰乱我们的结构)就可以工作?
C:\Users\me\Desktop> cd /d W:\r\dev\

W:\r\dev>"C:Program Files\R\R-3.5.0\bin\i386\Rscript.exe" scripts\some_function.R
Warning message:
package 'data.table' was built under R version 3.5.1
directory = W:/r/
environment = dev
Loading system parameters ...
Loaded 32 parameters
directory = W:/r/
environment = dev
Loading system parameters ...
Loaded 32 parameters
directory = W:/r/
environment = dev
Loading system parameters ...
Loaded 32 parameters