Sarcina Robocopy va fi executată manual, dar nu ca sarcină programată (Administrarea sistemului, Windows Server 2012, Robocopy)

Andrew a intrebat.

Utilizarea Robocopy pe Server 2012.

Am creat un script .cmd pentru a copia câteva fișiere de pe o unitate mapată pe mașina locală.

Unitatea mapată se află pe un alt server dintr-un domeniu diferit și se conectează cu acreditările de administrator de domeniu ale domeniului de la distanță. Domeniile nu sunt de încredere.

Funcționează dacă fac dublu clic pe fișierul .cmd și îl execut manual (conectat ca administrator de domeniu)

Dar, de îndată ce se execută ca sarcină programată (de asemenea, ca administrator de domeniu), se finalizează cu codul de stare 0, dar nu copiază efectiv nimic.

Linie simplă din script:

    @echo on
START /WAIT c:windowssystem32Robocopy.exe "W:Folder1Folder2Folder3Folder4" "C:Folder1Folder2Folder3Folder4" file.txt /np /LOG+:"C:RCLogschtask.log"

Când este rulat manual, fișierul jurnal conține:

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                              
-------------------------------------------------------------------------------

  Started : 13 December 2013 10:51:59
   Source : W:Folder1Folder2Folder3Folder4
     Dest : C:Folder1Folder2Folder3Folder4

    Files : file.txt

  Options : /DCOPY:DA /COPY:DAT /NP /R:1000000 /W:30 

------------------------------------------------------------------------------

                       1    W:Folder1Folder2Folder3Folder4

------------------------------------------------------------------------------

               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

Dar atunci când este executat din sarcina programată:

-------------------------------------------------------------------------------
   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:Folder1Folder2Folder3Folder4
The system cannot find the path specified.


   Source - W:Folder1Folder2Folder3Folder4
     Dest : C:Folder1Folder2Folder3Folder4

    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:Folder1Folder2Folder3Folder4
The system cannot find the path specified.

Are cineva vreo idee, vă rog?

Mulțumesc

3 răspunsuri
Manuel Sousa

Folosiți doar calea UNC către serverul la distanță în loc de litera de unitate W:

Motivul probabil este că maparea rețelei nu este disponibilă în timpul sarcinii programate. puteți, de asemenea, să modificați scriptul pentru a mapa unitatea, să faceți robocopia și să o demapatați la sfârșit, dar este mai simplu să utilizați calea UNC.

Comentarii

  • Am avut această problemă și aceasta a fost soluția. Vă mulțumesc. –  > Por rjkunde.
Mihai

Când jobul este rulat din scheduler, credențialele date sunt folosite doar pentru autentificare, nu pentru recrearea întregului mediu al utilizatorului. Trebuie să copiați direct în calea UNC sau să mapezi unitatea S: în UNC în cadrul scriptului înainte de comanda robocopy.

Revenind la problema dvs., în script, înainte de comanda ROBOCOPY adăugați net use w:
etshare_path$.Dacă scriptul va găsi litera w utilizată de o unitate mapată, va da eroare, dar va continua cu ROBOCOPY. Dacă litera w nu este folosită, va fi mapată unitatea și o va folosi în ROBOCOPY. Dacă nu aveți nevoie de unitatea mapată, puneți în script doar net use w: /delete după ROBOCOPY.

Deci, ar trebui să arate astfel:

NET USE W: \serverdrive_letter$ /USER: <USERNAME> <PASSWORD>
ROBOCOPY "W:Folder1Folder2Folder3Folder4 " "C:Folder1Folder2Folder3Folder4 " file.txt /np /LOG+:"C:RCLogschtask.log" 
NET USE W: /delete 

Priyal Shah

Pentru copia Winrobo folosiți calea UNC pentru serverul de la distanță.

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