2013-07-11 61 views
15

ho bisogno del mio programma da eseguire:File batch per eseguire xcopy senza sovrascrivere i file esistenti

xcopy s:\* z:\ /E 

Quando viene eseguito Xcopy, verrà richiesto se un file deve essere sovrascritto, quindi voglio il file batch per rispondere di no in tutti i casi al prompt.

Come posso realizzare questo?

+0

che dire '/ y'? – Endoro

+6

Appena imbattuto in questo. '/ D' ha funzionato per me. Non è necessario specificare la data, nel qual caso significa * qualsiasi * file esistente. – Noseratio

+0

Correlato: http://stackoverflow.com/q/191209/945456 –

risposta

9

xcopy non può essere configurato per SALTA file esistenti, quindi è necessario copiare utilizzando "robocopy".

+1

è sbagliato: usare xcopy/D – Thomas

+0

'xcopy/D' non è d'aiuto se è necessario utilizzare effettivamente un limite di date. – Tukaro

18

Ho quasi trascurato questo negli interruttori me stesso. Sono stato aiutato da un articolo di Exchange degli esperti.

Ecco l'interruttore di significato:

/D: file m-d-y Copie modificati a partire dalla data specificata. Se non viene data alcuna data, copia solo quei file la cui ora di origine è più recente della data di destinazione.

La parte "Se non viene data una data" è di particolare importanza. Questo non risponde esattamente alla domanda "senza sovrascrivere i file esistenti", ma risponde se il timestamp del file esistente del file sorgente non è più recente del file di destinazione.

Abbastanza vicino per lavori pubblici.

1

per evitare la domanda y/n/tutto è possibile simulare "tipo a" usando il comando echo come: eco n | blabla xcopy ... Ma non E'corretto perché qualsiasi domanda diversa sarà risposta "n" pure.

migliore scelta in cmd per sostituire xcopy è: fonte robocopy: destinazione:/e [/ ZB]

in modalità grafica, v'è un'applicazione chiamata "Teracopy" (utilizzare Google per trovarlo) che di override Windows Explorer Copia con diverse opzioni (pausa, ignora [tutto], sovrascrivi [tutto], minimizza, ...) che vorrei raccomandare.

+0

Teracopy è eccellente. –

2

questo funziona per me:

echo n|xcopy s:\* z:\ /E  
11

Sto usando i seguenti flag per anni. Sembra che compia tutti i comportamenti che descrivi nella domanda.

xcopy s:\ z:\ /S /Y /D

S copierà tutte le sottocartelle ei file al loro interno Y impedisce qualsiasi sovrascrittura richiede D essenzialmente copie nulla di più recente rispetto a quello che è già nella destinazione

+4

/y consente a xcopy di sovrascrivere il file senza chiedere conferma. https://support.microsoft.com/en-us/kb/240268 – DaBlue

+0

Ha funzionato magnificamente per me! –