Come dire di no a tutti & # 8220; vuoi sovrascrivere & # 8221; richiede una copia del file batch?

StackOverflow https://stackoverflow.com/questions/191209

  •  08-07-2019
  •  | 
  •  

Domanda

Per impostazione predefinita, la copia dal prompt dei comandi richiede di sovrascrivere i file già esistenti nella posizione di destinazione.

Puoi aggiungere " / Y " per dire " Sì a tutti " sostituzioni.

Ma come puoi dire " No a tutti " ?

In altre parole, voglio copiare tutto da una directory che non esiste già nella destinazione.

La cosa più vicina che vedo è l'argomento XCOPY per copiare cose solo dopo uno specifico mod-datetime.

È stato utile?

Soluzione

A meno che non esista uno scenario in cui non desideri copiare i file esistenti nel sorgente che sono stati modificati dall'ultima copia, perché non utilizzare XCOPY con / D senza specificare una data?

Altri suggerimenti

echo "No" | copy/-Y c:\source c:\Dest\

Puoi creare un file di testo con un'unica riga lunga di " n " quindi esegui il comando e inserisci < nc.txt dopo di esso. Ho fatto questo per copiare oltre 145.000 istanze in cui "Nessuna sovrascrittura" era quello che volevo e ha funzionato bene in questo modo.

Oppure puoi semplicemente tenere premuto il tasto n con qualcosa, ma ciò richiede più tempo rispetto all'uso di < per convogliarlo.

Ecco una soluzione alternativa. Se vuoi copiare tutto da A che non esiste già in B:

Copia A in una nuova directory C. Copia da B a C, sovrascrivendo tutto ciò che si sovrappone ad A. Copia da C a B.

Uso XCOPY con i seguenti parametri per la copia di assembly .NET:

/D /Y /R /H 

/D:m-d-y - Copies files changed on or after the specified date. If no date is given, copies only those files whose source time is newer than the destination time.

/Y - Suppresses prompting to confirm you want to overwrite an existing destination file.

/R - Overwrites read-only files.

/H - Copies hidden and system files also.

So che tutti voi pensate / D: date userà le cose date, ma solo / D senza il: fa esattamente quello che vogliamo così ...

xcopy {Source} {Destination} /E /D 

Copia senza sovrascrivere per raccogliere quei file che sono nuovi o che potrebbero non essere riusciti prima per qualche motivo.

Provalo, funziona.

Mi aspetto che xxcopy abbia un opzione per questo.

Bingo:

http://www.xxcopy.com/xxcopy27.htm#tag_231

2.3   By comparison with the file in destination

    The switches in this group select files based on the
    comparison between the files in the source and those in
    the destination.  They are often used for periodic backup
    and directory synchronization purposes. These switches
    were originally created as variations of directory backup.
    They are also convenient for selecting files for deletion.

2.3.1  by Presence/Absence

    The /BB and /U switches are the two switches which select
    files by the pure presence or absence as the criteria.
    Other switches in the this group (Group 2.3) are also
    affected by the file in the destination, but for a
    particular characteristics for comparison's sake.

    /BB  Selects files that are present in source but not in destination.
    /U   Selects files that are present in both source and destination.

-Adam

funziona bene

no | cp -rf c:\source c:\Dest\

echo N | copia / -y $ (SolutionDir) SomeDir $ (OutDir)

Prova questo:

robocopy "source" "destination" /e /b /copyall /xo /it

Copia quella riga nel blocco note e salvala come file .bat. Esegui il file e copierà tutto dall'origine alla destinazione. Quando lo esegui di nuovo, non sostituirà i file identici. quando si cambia o si modifica un file, il file verrà sostituito nella destinazione.

provalo. Ho creato un file .txt con alcune opere, ho eseguito lo script, ho modificato il testo sul file .txt ed ho eseguito nuovamente lo script, sostituendo solo il file di modifica dall'origine.

/e=Copies subdirectories. Note that this option includes empty directories
/b=Copies files in Backup mode
/copyall=Copies all file information
/xo=Excludes older files. (this is what prevents it from copy the same file over and over)
/it=Includes "tweaked" files. (this will allow the copy and replace of modified files)

Grazie per questo. Sto usando l'utilità della riga di comando AzCopy (v 3.1.0.93) per spostare ~ 1 milione di file dal mio PC locale all'archivio BLOB di Azure. Ho alcuni duplicati e non posso fare da babysitter alla copia per rispondere a ogni richiesta e non voglio ricaricare lo stesso file.

L'utilità AzCopy offre un comando / Y per sopprimere i messaggi di conferma ma finisce per dirgli di sovrascrivere il file di destinazione. Seguendo questa strada sono stato in grado di farlo NON caricare nuovamente il file. Tuttavia, sembra un po 'un trucco poiché in realtà non risponde al prompt con "No", invece visualizzo l'errore "Nessun input ricevuto quando l'utente deve scegliere tra diverse opzioni." ma non carica il file.

Ecco il comando che ho usato: echo n | AzCopy / Source: " {percorso file} " / Dest: " {URL di archiviazione BLOB} " / DestKey: {key}

Spero che questo aiuti il ??prossimo.

A seconda della dimensione e del numero di file da copiare, puoi prima copiare la directory di destinazione sull'origine con " sì a tutti " ;, quindi fare la copia originale che stavi facendo, anche con " sì a tutti " impostato. Questo dovrebbe darti gli stessi risultati.

Abbiamo usato " robocopy " tramite " invoke-command " per copiare un'enorme quantità di VM nel nostro ambiente. Abbiamo scoperto che " robocopy " a volte esce inaspettatamente e l'intero processo diminuisce. Quindi abbiamo deciso di utilizzare " xcopy " ;. Ora stiamo verificando il suo funzionamento e per " creare " " Non per tutti " opzione che usiamo quella funzione (powershell):

funzione gen_long_no ([stringa] $ percorso) {     $ risultato = " " ;; Get-ChildItem $ path -Recurse | ? {if ($ _. PSIsContainer -eq $ false) {$ risultato + = " n " }};     restituisce $ risultato }

Forse aiuta qualcuno.

L'aggiunta degli switch per le sottodirectory e la verifica funziona bene.  echo n | xcopy / -Y / s / e / v c: \ source *. * c: \ Dest \

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top