Robocopy作业将手动运行,但不作为计划任务

在Server 2012上使用Robocopy。

我已经创build了一个.cmd脚本来将映射驱动器中的一些文件复制到本地机器上。

映射的驱动器位于不同域中的另一台服务器上,并与远程域的域pipe理员凭证连接。 域不受信任。

它工作,如果我双击.cmd文件并手动运行(以域pipe理员login)

但只要它作为一个计划任务运行(也作为域pipe理员运行)它完成状态码0,但实际上并没有任何复制。

简单的脚本:

@echo on START /WAIT c:\windows\system32\Robocopy.exe "W:\Folder1\Folder2\Folder3\Folder4" "C:\Folder1\Folder2\Folder3\Folder4" file.txt /np /LOG+:"C:\RCLog\schtask.log" 

手动运行时,日志文件包含:

 ------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows ------------------------------------------------------------------------------- Started : 13 December 2013 10:51:59 Source : W:\Folder1\Folder2\Folder3\Folder4\ Dest : C:\Folder1\Folder2\Folder3\Folder4\ Files : file.txt Options : /DCOPY:DA /COPY:DAT /NP /R:1000000 /W:30 ------------------------------------------------------------------------------ 1 W:\Folder1\Folder2\Folder3\Folder4 ------------------------------------------------------------------------------ Total Copied Skipped Mismatch FAILED Extras Dirs : 1 0 0 0 0 0 Files : 1 0 1 0 0 0 Bytes : 4.1 k 0 4.1 k 0 0 0 Times : 0:00:00 0:00:00 0:00:00 0:00:00 Ended : 13 December 2013 10:51:59 

但是从计划任务运行时:

 ------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows ------------------------------------------------------------------------------- Started : 13 December 2013 10:44:47 2013/12/13 10:44:47 ERROR 3 (0x00000003) Getting File System Type of Source W:\Folder1\Folder2\Folder3\Folder4\ The system cannot find the path specified. Source - W:\Folder1\Folder2\Folder3\Folder4\ Dest : C:\Folder1\Folder2\Folder3\Folder4\ Files : file.txt Options : /DCOPY:DA /COPY:DAT /NP /R:1000000 /W:30 ------------------------------------------------------------------------------ 2013/12/13 10:44:47 ERROR 3 (0x00000003) Accessing Source Directory W:\Folder1\Folder2\Folder3\Folder4\ The system cannot find the path specified. 

有人有任何想法吗?

谢谢

只需使用远程服务器的UNCpath而不是驱动器号W:

可能的原因是networking映射在计划任务期间不可用。 您还可以更改脚本以映射驱动器,最终执行robocopy并将其取消映射,但使用UNCpath会更简单。

当从调度程序运行作业时,给定的凭据仅用于身份validation,不用于重新创build整个用户的环境。 在robocopy命令之前,您必须直接复制到UNCpath或映射S:驱动器到脚本中的UNC。

回到你的问题,在脚本中,在ROBOCOPY命令之前添加net use w:\ netshare_path $。 如果脚本将查找映射驱动器使用的字母w将会出错,但继续使用ROBOCOPY。 如果字母w未被使用,则将驱动器映射到它并在ROBOCOPY中使用它。 如果你不需要映射的驱动器,只需在脚本中使用w:/ delete在ROBOCOPY之后。

所以应该看起来像这样:

 NET USE W: \\server\drive_letter$ /USER: <USERNAME> <PASSWORD> ROBOCOPY "W:\Folder1\Folder2\Folder3\Folder4 " "C:\Folder1\Folder2\Folder3\Folder4 " file.txt /np /LOG+:"C:\RCLog\schtask.log" NET USE W: /delete 

对于Winrobo复制使用远程服务器的UNCpath。

URL = http://www.upway2late.com/projects/winrobocopy