Использование Robocopy на сервере 2012.
Я создал сценарий .cmd для копирования некоторых файлов с подключенного диска на локальный компьютер.
Подключенный диск находится на другом сервере в другом домене и подключается с учетными данными администратора домена удаленных доменов. Домены не доверяют.
Это работает, если я дважды щелкну файл .cmd и запустил его вручную (вошел в систему как администратор домена)
Но как только он запускается как запланированная задача (запускается также как администратор домена), он получает код состояния 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.
У кого-нибудь есть идеи, пожалуйста?
Спасибо
Просто используйте UNC-путь к удаленному серверу вместо буквы W:
Вероятная причина в том, что отображение сети недоступно во время запланированной задачи. Вы также можете изменить свой сценарий, чтобы сопоставить диск, выполнить robocopy и отключить его в конце, но проще использовать путь UNC.
Когда задание запускается из планировщика, данные учетные данные используются только для аутентификации, а не для воссоздания всей пользовательской среды. Вы должны скопировать непосредственно в UNC-путь или сопоставить диск S: UNC в сценарии до команды robocopy.
Переходя к вашей проблеме, в сценарии перед командой ROBOCOPY добавьте net use w: \ netshare_path $. Если сценарий обнаружит букву w, используемую подключенным диском, произойдет ошибка, но продолжится ROBOCOPY. Если буква w не используется, будет назначен ей диск и будет использоваться в ROBOCOPY. Если вам не нужен подключенный диск, просто введите в скрипт net use 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 используйте UNC-путь для удаленного сервера.