Ho bisogno di copiare tutti i file *.doc
(ma non le cartelle i cui nomi corrispondono a *.doc
) da una cartella di rete \\server\source
(inclusi i file in tutte le cartelle nidificate) a una cartella locale C:\destination
senza preservare la gerarchia delle cartelle nidificate (ovvero tutti i file devono andare direttamente in C:\destination
e nessuna cartella nidificata dovrebbe essere creata in C:\destination
). Nel caso ci siano diversi file con lo stesso nome da diverse sottocartelle di \\server\source
, solo il primo dovrebbe essere copiato e mai sovrascritto - tutti i file in conflitto trovati in seguito dovrebbero essere saltati (potrebbero esserci molti casi come questo, e i file saltati dovrebbero non essere trasferito sulla rete, altrimenti ci vorrebbe troppo tempo). Qui è il mio tentativo di attuarlo in PowerShell:Come copiare determinati file (senza gerarchia di cartelle), ma non sovrascrivere i file esistenti?
cp \\server\source\* -Recurse -Include *.doc -Container:$false -Destination C:\destination
Ci sono almeno due problemi con questo comando:
- Si copia di cartelle i cui nomi corrispondono
*.doc
troppo. - In caso di nomi in conflitto, qualsiasi file trovato successivamente viene trasferito sulla rete e sovrascrive quello precedente.
Potete suggerire come risolvere questi problemi?
Implementazioni utilizzando copy
, xcopy
, robocopy
, cscript
o *.bat
, *.cmd
sono anche benvenute.
Il sistema operativo locale è Windows 8 e il file system è NTFS.
Qual è il comportamento previsto se lo script viene eseguito due volte? Dovrebbe ancora copiare tutto una volta? O dovrebbe copiare nulla? –
@splatteredbits Si può presumere che la directory di destinazione sia inizialmente vuota. Se questa precondizione fallisce, il comportamento dello script potrebbe essere indefinito. –