Par défaut, la copie à partir de l'invite de commande vous invite à écraser les fichiers déjà présents à l'emplacement cible.
Vous pouvez ajouter "/ Y" pour dire "Oui à tous" les remplacements.
Mais comment pouvez-vous dire "Non à tous"?
En d’autres termes, je veux tout copier d’un répertoire qui existe pas existe déjà dans la cible.
La chose la plus proche que je vois est l'argument XCOPY pour ne copier que les choses après une date-heure spécifique.
Sauf s'il existe un scénario dans lequel not ne souhaitez pas copier les fichiers existants qui ont été modifiés depuis la dernière copie, pourquoi ne pas utiliser XCOPY avec/D sans spécifier de date?
echo "No" | copy/-Y c:\source c:\Dest\
Vous pouvez créer un fichier texte avec une seule longue ligne de "n", puis exécuter votre commande et mettre <nc.txt après celle-ci. Je l’ai fait pour copier plus de 145 000 occurrences où «je ne voulais pas écraser» était ce que je voulais et cela a bien fonctionné.
Ou vous pouvez simplement maintenir la touche n enfoncée avec quelque chose, mais cela prend plus de temps que d'utiliser le caractère <pour la canaliser.
Voici une solution de contournement. Si vous voulez tout copier de A qui n’existe pas déjà dans B:
Copiez A dans un nouveau répertoire C . Copiez B en C en écrasant tout ce qui se chevauche avec A . Copiez C en B.
J'utilise XCOPY
avec les paramètres suivants pour copier des assemblys .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.
Je sais que vous pensez tous/D: la date utilisera des données de date, mais juste/D sans le: fait exactement ce que nous voulons, alors ...
xcopy {Source} {Destination} /E /D
Copie sans écrasement pour récupérer les fichiers nouveaux ou ayant peut-être déjà échoué pour une raison quelconque.
Essayez, ça marche.
Je pense que xxcopy a une option pour cela.
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
cela fonctionne bien
no | cp -rf c:\source c:\Dest\
Essaye ça:
robocopy "source" "destination" /e /b /copyall /xo /it
Copiez cette ligne dans le bloc-notes et enregistrez-le en tant que fichier .bat. Exécutez le fichier et tout sera copié de la source à la destination. Lorsque vous l'exécutez à nouveau, il ne remplacera pas les fichiers identiques. lorsque vous modifiez ou modifiez un fichier, il remplace le fichier à la destination.
testez-le. J'ai créé un fichier .txt avec quelques travaux, exécuté le script, modifié le libellé du fichier .txt et réexécuté le script; il remplace uniquement le fichier de modification de la source.
/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)
Merci pour cela. J'utilise l'utilitaire de ligne de commande AzCopy (v 3.1.0.93) pour déplacer environ 1 million de fichiers de mon PC local vers mon stockage de blob Azure. J'ai des doublons et je ne peux pas garder la copie pour répondre à chaque invite et je ne veux pas télécharger à nouveau le même fichier.
L'utilitaire AzCopy propose une commande/Y pour supprimer les invites de confirmation, mais finit par lui demander de remplacer le fichier de destination. En empruntant cette voie, j’ai été en mesure de ne PAS re-télécharger le fichier. Cependant, cela semble être un peu un bidouillage, car il ne répond pas réellement à l'invite par "Non", mais l'erreur "Aucune entrée n'est reçue lorsque l'utilisateur doit faire un choix parmi plusieurs options données". mais ne télécharge pas le fichier.
Voici la commande que j'ai utilisée: echo n | AzCopy/Source: "{chemin du fichier}"/Dest: "{URL de stockage d'objets blob}"/DestKey: {clé}
J'espère que cela aide le prochain gars.
echo N | copier/-y $ (SolutionDir) SomeDir $ (OutDir)
En fonction de la taille et du nombre de fichiers copiés, vous pouvez copier le répertoire de destination par-dessus le fichier source avec "oui à tous", puis créer la copie originale que vous étiez en train de créer, ainsi que "oui à tous". Cela devrait vous donner les mêmes résultats.
Nous avons utilisé "robocopy" via "invoke-command" pour copier une quantité énorme de machines virtuelles dans notre environnement. Nous avons découvert que "robocopy" se termine parfois de manière inattendue et que tout le processus se termine. Nous avons donc décidé d'utiliser "xcopy". Maintenant, nous vérifions son travail et pour "créer" l'option "Pas pour tous", nous utilisons cette fonction (powershell):
fonction gen_long_no ([chaîne] $ chemin) { $ result = ""; Get-ChildItem $ path -Recurse | ? {if ($ _. PSIsContainer -eq $ false) {$ result + = "n"}}; return $ result }
Peut-être aide quelqu'un.
L'ajout des commutateurs pour les sous-répertoires et la vérification fonctionnent parfaitement . echo n | xcopy/-Y/s/e/v c:\source *. * c:\Dest \