Cela semble assez simple et peut-être que je ne fais qu'effleurer l' indicateur approprié , mais comment pourrais-je, dans une commande, copier un fichier d'un répertoire à un autre et le renommer dans le répertoire de destination? Voici ma commande:
if exist "bin\development\whee.config.example"
if not exist "TestConnectionExternal\bin\Debug\whee.config"
xcopy "bin\development\whee.config.example"
"TestConnectionExternal\bin\Debug\whee.config"
Cela m'invite à chaque fois:
TestConnectionExternal \ bin \ Debug \ whee.config spécifie-t-il un nom de fichier ou un nom de répertoire sur la cible (F = fichier, D = répertoire)?
Je veux supprimer cette invite; la réponse est toujours F
.
command-line
command-prompt
xcopy
Sarah Vessels
la source
la source
cp
pas à copier des fichiers / répertoires!Réponses:
N'utilisez pas le
xcopy
, utilisez à lacopy
place, il n'a pas ce problème.xcopy
est généralement utilisé lors de l'exécution de copies récursives de plusieurs fichiers / dossiers, ou lorsque vous avez besoin des fonctionnalités de vérification / invite qu'il offre. Pour les copies d'un seul fichier, lacopy
commande fonctionne très bien.la source
copy
ne copiera pas le fichier si la structure complète du répertoire de la destination n'existe pas déjà.xcopy
créera automatiquement tous les répertoires nécessaires.xcopy
et pas seulementcopy
.j'utilise
pour le contourner.
la source
echo d | xcopy srcdirectory destdirectory /S
echo d | xcopy ...
pour moi. Tu es brillantUne autre option consiste à utiliser un caractère générique de destination. Notez que cela ne fonctionne que si les noms de fichiers source et destination sont les mêmes, donc même si cela ne résout pas l'exemple spécifique de l'OP, je pensais que cela valait la peine d'être partagé.
Par exemple:
créera une copie du fichier "whee.config.example" dans le répertoire de destination sans demander de fichier ou de répertoire.
Mise à jour : Comme mentionné par @chapluck:
Vous pouvez changer
"* "
pour"[newFileName].*"
. Il persiste l'extension de fichier mais permet de renommer. Ou plus hacky:"[newFileName].[newExt]*"
pour changer l'extensionla source
Il existe une sorte de fonctionnalité non documentée dans XCOPY. vous pouvez utiliser:
xcopy "bin \ development \ whee.config.example" "c: \ mybackup \ TestConnectionExternal \ bin \ Debug \ whee.config *"
je l'ai testé juste aujourd'hui. :-)
la source
whee.config.example
le dossier de destination, carwhee.config*
correspondwhee.config.example
.b.txtxt
, puis j'ai lancé la commandexcopy a.txt b.txt* /F /Y
et le fichiera.txt
a été copiéb.txt
comme prévu. De plus, lors de l'utilisation des/F /Y
commutateurs, la copie réelle est affichée à l'écran, exactement comme prévu.Allez simplement sur http://technet.microsoft.com/en-us/library/bb491035.aspx
Voici ce qu'est le PROBLÈME PRINCIPAL "... Si la destination ne contient pas de répertoire existant et ne se termine pas par une barre oblique inverse (), le message suivant apparaît: ...
La destination spécifie-t-elle un nom de fichier ou un nom de répertoire sur la cible (F = fichier, D = répertoire)?
Vous pouvez supprimer ce message en utilisant l'option de ligne de commande / i, ce qui oblige xcopy à supposer que la destination est un répertoire si la source est constituée de plusieurs fichiers ou répertoires.
Ça m'a pris du temps, mais tout ce qu'il faut c'est RTFM.
la source
Il existe donc une solution simple à cela. C'est certes maladroit, mais ça marche. xcopy ne vous demandera pas de savoir si la destination est un répertoire ou un fichier SI le nouveau fichier (nom de fichier) existe déjà. Si vous faites précéder votre commande xcopy d'un simple écho au nouveau nom de fichier, il écrasera le fichier vide. Exemple
la source
C'est de la réponse de Bills.
Juste pour être vraiment clair pour les autres.
Si vous copiez UN fichier d'un endroit à un autre ET que vous souhaitez créer la structure de répertoires complète, utilisez la commande suivante:
Oui, mettez une barre oblique inversée à la fin du nom de fichier et il ne vous demandera PAS s'il s'agit d'un fichier ou d'un répertoire. Parce qu'il n'y a qu'UN fichier dans la source, il supposera qu'il s'agit d'un fichier.
la source
dir "C:\Target Data\\Images\2013\08\12"
09/25/2015 10:48 AM <DIR> 85e4a707-2672-481b-92fb-67ecff20c96b.jpg
xcopy src dest /I
REM This assumes dest is a folder and will create it, if it doesnt exists
la source
J'ai eu un problème similaire et robocopy et xcopy n'ont pas aidé, car je voulais supprimer les commentaires et utiliser un nom de fichier de destination différent. j'ai trouvé
travailler selon mes besoins.
la source
Retour à la question d'origine:
pourrait être fait avec deux commandes par exemple:
En ajoutant simplement "\ .." au chemin du fichier de destination, le répertoire de destination est créé s'il n'existe pas déjà. Dans ce cas
qui est le répertoire parent du répertoire inexistant
Au moins pour WIN7 mkdir ne se soucie pas si le répertoire
existe vraiment.
la source
XCOPY avec * à la fin de la cible pour copier les fichiers, qu'ils existent ou non dans la destination XCOPY avec \ à la fin de la cible pour copier les dossiers et le contenu, qu'ils existent ou non dans la destination
Alternativement
RoboForm SOURCE DEST FILE pour les fichiers RoboForm SOURCE DEST pour les dossiers
la source
Je suggère à la
robocopy
place decopy
ouxcopy
. Utilisé comme commande ou dans l'interface graphique sur les clients ou serveurs. Tolérant aux pauses du réseau et vous pouvez choisir d'ignorer les attributs de fichier lors de la copie des attributs de copie par fichier. Oh, et il prend en charge les machines multi-cœurs afin que les fichiers soient copiés beaucoup plus rapidement en "parallèle" les uns avec les autres plutôt que de manière séquentielle.robocopy
peut être trouvé sur MS TechNet.la source
La bonne chose à faire si vous voulez simplement copier un fichier et changer son nom à destination est:
Et ça va bien marcher
la source
Pour dupliquer des fichiers volumineux, xopy avec le commutateur / J est un bon choix. Dans ce cas, dirigez simplement un F pour fichier ou un D pour répertoire. En outre, vous pouvez enregistrer des travaux dans un tableau pour de futures références. Par exemple:
Merci à Chand avec quelques modifications: https://stackoverflow.com/users/3705330/chand
la source
Utilisez la copie au lieu de xcopy lors de la copie de fichiers.
par exemple, copiez "bin \ development \ whee.config.example" "TestConnectionExternal \ bin \ Debug \ whee.config"
la source
copy /Y source destination
pour passer la confirmation d'écrasement.Comme vous ne changez pas réellement le nom de fichier, vous pouvez retirer le nom de fichier de la destination et il n'y aura pas de questions.
Cette approche fonctionne bien lorsque le répertoire de destination est garanti d'exister et lorsque la source peut également être un fichier ou un répertoire.
la source
Debug
répertoire est probablement garanti d'exister.Contournement, utilisez ReName ... et nommez-le un nom cryptique, puis renommez-le en son nom propre
C:
CD "C: \ Users \ Public \ Documents \ Mes sites Web \ AngelFire ~ Zoe \"
XCopy / D / I / V / Y "C: \ Users \ Public \ Documents \ Mes sites Web \ HostGator ~ ZoeBeans \ cop.htm"
Ren "cop.htm" "christ-our-passover.htm"
la source
xcopy vous permettra de copier un seul fichier dans un dossier spécifié, il ne vous permettra pas de définir un nom de destination. Si vous avez besoin du nom de destination, renommez-le avant de le copier.
ren "bin \ development \ whee.config.example" whee.config
xcopy / R / Y "bin \ development \ whee.config" "TestConnectionExternal \ bin \ Debug \"
la source
ren "bin\development\whee.config" whee.config.example
Placez un astérisque (*) à la fin du chemin de destination pour ignorer le différend de D et F.
Exemple:
la source
Est-ce que xxxxxxxxxxxx spécifie un nom de fichier ou un nom de répertoire sur la cible
la source
J'ai rencontré le même problème lorsque j'essaie de copier le fichier avec un nouveau nom uniquement si le fichier n'existe pas dans la destination ou existe (avec un nouveau nom), mais est plus ancien. La solution consiste à ajouter un caractère
*
à la fin du nom du fichier de destination. Exemple:la source
Vous ne pouvez pas spécifier qu'il s'agit toujours d'un fichier. Si vous n'avez pas besoin des autres fonctionnalités de xcopy, pourquoi ne pas simplement les utiliser régulièrement
copy
?la source
copy
, étant une commande interne, ne définit pas ErrorLevel. Si vous souhaitez pouvoir influencer le chemin d'un fichier de commandes en cas d'erreur de copie, vous devez utiliserXCOPY
.