在BATCH模式下将工作目录设置为映射的网络驱动器

时间:2015-07-29 19:01:39

标签: r

在批处理模式下将工作目录更改为映射的网络驱动器(例如,\ Share \ Folder映射到Z :)时,我在Windows上出现问题,导致R失败。如果我在交互式控制台中运行相同的脚本,我没有任何问题。我通过使用Windows批处理(.bat)文件中指定的脚本运行R.exe来完成此操作。 .bat文件包含以下内容。

"C:\RRO\R-3.2.1\bin\R.exe" CMD BATCH "C:/Scripts/Rscript.R"

错误只是......

> setwd( 'Z:/' ) 
 Error in setwd("Z:/") : cannot change working directory

如果有助于避免这个问题,我会完全接受通过Windows任务调度程序安排这些脚本的不同方法。映射驱动器的原因是我需要提供一些凭据才能访问它,这是在映射时自动完成的,但是可以测试一下,如果有人知道如何,那么R中的情况是不是这样。

4 个答案:

答案 0 :(得分:1)

想象一下带有

的批处理文件
cd Z:\<Destination>
Z:
RScript "C:/Scripts/Rscript.R"

这将使Windows能够使用所有凭据切换到目录,然后在该目录中启动R.所以工作目录。是R开始的位置。这样做要求"C:\RRO\R-3.2.1\bin\"PATH变量的一部分。

祝你好运!

答案 1 :(得分:1)

我希望这对你的问题有帮助。 我通过使用Rscript命令而不是CMD BATCH

来重复问题而没有错误

我的R代码,我保存为脚本(test1.R)

library(openxlsx)

setwd("P:/Records/Indexing Operations/Indexing Data Analysis/Daily Reports")
my.data = read.xlsx("FSI Daily Project Status Report - 18 Mar 2016.xlsx", sheet = 1) 
setwd("C:/Users/golieth/Documents/")

png(filename = "test.png", width = 500, height = 350 )
plot(my.data$Total.Images, my.data$Completed.Images.A,
 main = Sys.time())
dev.off()

注意我在此文件中更改了目录2次。一旦访问映射的网络驱动器和第二个数据,将图像保存到计算机。我将当前时间的时间戳作为主要情节标题,以便您可以重复运行批处理文件并验证其是否有效

我的批处理文件

cd C:\Program Files\R\R-3.2.3\bin\i386
Rscript C:\Users\golieth\Documents\test1.R

注意:在批处理文件中,如果您的代码依赖于32位,则需要将R程序(cd)的目录更改为R 32位程序。与R64相同。接下来,Rscript应该引用保存.R文件的位置

最后,这可能是显而易见的,但请确保在运行批处理文件之前已连接到VPN。

答案 2 :(得分:0)

编写 .bat 文件时,请记住cd不用于更改驱动器号。要更改驱动器号,只需输入驱动器号的名称,这应该在将最终cd发送到工作目录之前完成。

像这样:

sample.bat

z:
cd z:\your\working\directory\
C:\RRO\R-3.2.1\bin\Rscript.exe C:/Scripts/Rscript.R

答案 3 :(得分:-1)

您可以将文件保存在本地代码中,并在代码中使用queryString = @" UPDATE TABLENAME SET CONFIRMED = @datenow WHERE ID in (select cast(value as int) from openjson( @ids ) )"; 将文件复制到网络驱动器上。另外,尝试用完整的网络地址名称替换file.copy网络驱动器号中的路径,例如。 file.copy

相关问题