2014-10-07 16 views
11

voglio usare un file batch per sincronizzare le 2 cartelle su Windows, e sto usando il comando xcopy come questosincronizzare due cartelle utilizzando file batch

xcopy /s /d <Original Folder> <Destination Folder> 

Sta funzionando perfettamente, perché voglio solo sovrascrivere solo quelli modificati, ma ho 1 piccolo problema, quando elimino un file dalla cartella originale, quel file rimane nella cartella di destinazione quando eseguo il file batch, rompendo la sincronizzazione che voglio raggiungere ... Penso che questo possa ' t essere fatto con xcopy, ma non so quale comando dovrei usare nel caso in cui elimini un file nella cartella originale.

EDIT: Questo programma è per le persone che non comprendono molti PC, quindi non voglio installare nulla sul loro PC. Voglio solo un file batch semplice per mantenere le 2 cartelle sincronizzate

SOLUZIONE: Grazie a Kuba Wyrostek ho avuto modo di questo comando

robocopy < cartella originale > < Cartella di destinazione >/e/spurgo

Grazie tutto per il tuo tempo

risposta

1

Il comando XCOPY per copiare gli aggiornamenti da una cartella ad un'altra è la seguente:

C:\> XCOPY C:/SOURCE D:/DESTINATION /E /D /C /Y 

Le bandiere utilizzati nella sopra l'esempio hanno i seguenti significati:

  • /E causa la copia di tutte le cartelle e sottocartelle
  • /D causa un confronto DATE, solo la copia di elementi più recenti della voce DESTINATION. Se DESTINATION è più vecchio o non contiene il file, verrà copiato.
  • /C dice XCOPY per continuare se si verifica un errore - di solito si verificano errori con i file di sola lettura, o file che sono protetti permessi
  • /Y dice XCOPY per sopprimere che richiede la conferma, che è necessario se si intende creare uno script di automazione o operazione pianificata
+0

Questo non risponde alla domanda originale. – Mikhail

+0

@ geisterfurz007 Sei sicuro che questo non sia l'originale? Quell'articolo non ha una data, ma il suo commento più vecchio è di 10 mesi * dopo * questo post. Se ritieni che un post sia plagiato, ti preghiamo di alzare un flag di moderatore. –

+0

@RyanBemrose Argh cosa ho fatto>.> Nifty piccoli dettagli e un'idea a cui non avevo nemmeno pensato. Ho perso il mio commento e il mio voto negativo. Grazie per la nota e il suggerimento per potenziali casi futuri :) – geisterfurz007

9

per raffinare la tua risposta, si può semplicemente fare: robocopy <Original Folder> <Destination Folder> /mir

/mir rispecchia un albero di directory (equivalente a /e plu s /purge).

2

So che questo è vecchio, ma ho una domanda. Questo non può essere fatto con i comandi xcopy corretti.

Cartella 1: c: \ workingFolder \ "contenuti qui"

Cartella 2: d: \ workingFolderSync \ "contenuti qui"

dei file batch di seguito

xcopy "c:\workingFolder\*.*" "d:\workingFolderSync\" /i /s /d /y 
xcopy "d:\workingFolderSync\*.*" "c:\workingFolder\" /i /s /d /y 
pause 

(io di solito rimuovere la pausa dopo la verifica e la conoscenza del lotto funziona.) Ma questo copia solo il contenuto dalla cartella all'altra se è più recente. Quindi guarda nella cartella di destinazione e copia i contenuti dalla destinazione alla fonte se è più recente. Questo riproduce ciò che fa la sincronizzazione, ad eccezione del monitoraggio in tempo reale dei file modificati. La creazione di una corretta pianificazione delle attività può effettivamente implementare l'esecuzione di questo comando in momenti specifici per riprodurre quasi perfettamente la sincronizzazione. È anche possibile eseguirlo prima della modifica su una macchina e dopo la modifica su una macchina. Anche facendo la stessa cosa su una seconda macchina se si utilizza una unità di rete per la sincronizzazione.

0

Il tuo metodo avrà due problemi principali:

  • file eliminati da una cartella verrà ripristinato dalla copia a sinistra in altra cartella la prossima volta che si esegue il xcopy
  • Rinominare i file possono causare risultati caotici .
Problemi correlati