Comment copier un fichier à l'aide de commandes DOS dans une structure de répertoire qui n'existe peut-être pas encore? Je dois pouvoir forcer la création du chemin de répertoire vers l'emplacement du fichier cible si cet emplacement n'existe pas déjà.
Par exemple, il y a déjà un fichier.txt à cet emplacement:
C:\file.txt
Et je veux le copier sur
C:\example\new\path\to\copy\of\file\file.txt
mais à ce moment
C:\example\
et tous les sous-répertoires peuvent ou non exister.
En gros, je cherche une commande "Copier et créer le chemin cible si nécessaire". Que recommanderiez-vous est le meilleur moyen d'y parvenir?
Windows command line
dans le titre / corps, avec les balises windows et la ligne de commande (notez que cmd.exe est une balise synonyme de ligne de commande ). La balise ms-dos doit être supprimée. et le tag dos ne doit en aucun cas être utilisé.Réponses:
Oui, c'est xcopy . Voici à quoi ça va ressembler:
Informations XCOPY sur
Vous voudrez peut-être aussi vous intéresser à ROBOCOPY , dans le kit de ressources XP et standard dans Vista, Windows 7 et Server 2008.
la source
echo f |
avec xcopy pour répondre automatiquement à cette invite.J'ai essayé d'utiliser quelque chose comme:
Mais cela me demanderait s'il s'agissait d'un fichier ou d'un répertoire. Puisque j'avais cela dans un fichier batch avec 40000 fichiers, ce serait peu pratique. Cette solution ne résout que partiellement mon problème: elle crée la structure de répertoires, mais elle nécessite une interaction de l'utilisateur. J'ai trouvé la solution à mon problème ici:
https://stackoverflow.com/questions/4283312/batch-file-asks-for-file-or-folder
Ce qui consiste essentiellement à ajouter un "*" à la fin du fichier de destination:
EDIT: comme indiqué par @romkyns, des résultats indésirables peuvent apparaître si vous avez des fichiers portant le même nom et quelque chose d'autre (comme 'fichier.txt.bak'). Dans le même fil posté ci-dessus, une autre solution qui fonctionne est le piping "echo f" de votre commande:
Où vous devriez substituer le "f" pour la lettre que votre système utilise pour le fichier, au cas où vous l'utiliseriez dans une autre langue.
la source
file.txt.bak
de répertoire, bien sûr. Néanmoins, cela pourrait fonctionner dans certains scénarios.echo f |
, vous n'avez plus besoin de fuite*
.DOS, wow! Quoi qu'il en soit, vous utilisez la commande XCOPY .
la source
Que vous utilisiez
copy
ouxCopy
, afin d'éviter une erreurcopy
ou une invite dexCopy
, testez l'existence du dossier requis et créez-le si nécessaire:ou combinez les commandes avec
&&
une seule ligne de commande:La même chose peut être faite avec
move
au lieu decopy
. Une réponse de StackOverflow m'a appris comment utiliser cette techniquemove
.la source