web-dev-qa-db-fra.com

Demander à XCopy de copier un fichier et de ne pas écraser le précédent s'il existe (sans invite)

J'envoie une commande à un ordinateur distant afin de lui faire copier un fichier. Je veux que le fichier soit copié, mais pas pour écraser le fichier précédent avec le même nom (s'il existe). J'ai également besoin que la commande s'exécute sans aucune invite (xcopy aime demander si le nom cible que j'ai spécifié est fichier ou répertoire, et il proposera également d'écraser un fichier).

23
Vic

Pas moyen de le faire PAS écraser autant que je sache. mais/Y le remplacera. et/je me débarrasserai du fichier/dict Prompt. Voir xcopy /? pour toutes les options

3
Cine

J'ai de bons résultats avec xcopy /d.

Il copiera les fichiers PLUS RÉCENTS, et puisque nous pouvons supposer que les fichiers existants ont le même horodatage, vous ne copiez que les fichiers qui n'existent pas.

57
Daniel Mošmondor

juste au cas où quelqu'un d'autre trouverait ceci: robocopy x:\sourcefolder Y:\destfolder/s/e/r: 0/z

beaucoup mieux que xcopy, vous donne même un tableau à la fin informant de tout fichier défaillant ou ignoré. N'invite pas à ne pas écraser.

24
wellspokenman

Eh bien, il y a un certain remède! Cela m'a aidé à économiser une grande partie de mes efforts et de mon temps sur Win10 lors de l'écriture d'une configuration pour notre démo de produit.

Essayez simplement d'utiliser la tuyauterie:

@ ECHO N | COPY /- Y SourceFiles Destination

À titre d'exemple, j'ai utilisé ce morceau de code afin d'avoir une copie propre, douce et sûre!

@FOR /D %%F in ("FooPath") DO @(
   @ECHO N|COPY /-Y ^"%%~npdxF\*.*^" ^"GooPath^" 3>NUL 2>NUL >NUL
)

où évidemment FooPath est la source et GooPath est la destination.

Prendre plaisir!

(source principale: https://ss64.com/nt/copy.html )

4
Sina

Vous pouvez également utiliser la commande replace. Il a deux modes: pour ajouter des fichiers qui n'existent pas ou remplacer des fichiers qui existent. Vous voulez le mode précédent:

replace <path1> <path2> /A
3
potes

La commande suivante copie les fichiers et le dossier mais ne remplace pas le fichier s'il existe déjà.

xcopy "*.*" "C:\test\"  /s /y /d
2
rajesh

J'ai dû copier ET renommer des fichiers, j'ai donc reçu l'invite de création d'un fichier ou d'un répertoire.

C'est la façon, plutôt "hackish" de le faire:

ECHO F | XCOPY /D "C:\install\dummy\dummy.pdf" "C:\Archive\fffc810e-f01a-47e8-a000-5903fc56f0ec.pdf"

XCOPY utilisera le "F" pour indiquer qu'il doit créer la cible sous forme de fichier:

C:\install>ECHO F   | XCOPY /D "C:\install\dummy\dummy.html" "C:\Archive\aa77cd6e-1d19-4eb4-b2a8-3f8fe60daf00.html"
Does C:\Archive\aa77cd6e-1d19-4eb4-b2a8-3f8fe60daf00.html specify a file name or directory name on the target
(F = file, D = directory)? F
C:\install\dummy\dummy.html
1 File(s) copied

J'ai également vérifié que cette commande laisse les fichiers existants seuls. (Tu devrais aussi :-)

1
Erk