在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。