xcopy ne crée pas de structure de répertoire
J'ai un problème étrange avec xcopy dans Windows XP Professionnel. Je ne sais pas si ses une question stupide que je suis en spécifiant uniquement un fichier en tant que source, dois-je donc même s'attendre à tout autre comportement ? Ce que c'est:
Je suis en utilisant xcopy <src> <dest> /s/y
.
<src>=C:\sourcefolder\a\b\c\d\something.java
et
<dest>=C:\destinationfolder
.
Maintenant xcopy
copie le fichier, mais ne pas créer la structure de répertoire \a\b\c\d\
à l'intérieur de C:\destinationfolder
.
ce que je veux, c'est C:\destinationfolder\a\b\c\d\something.java
et
ce que je reçois est C:\destinationfolder\something.java
- J'ai essayé de l'exécuter dans le dossier de destination
C:\destinationfolder
en spécifiant un.
pour le dossier cible - Essayé sans cible au-dessus de
Il y a un script que j'ai qui appelle xcopy
de manière itérative, donc je suis parti avec C:\destinationfolder\many java files
sans aucune structure de répertoire.
A. Oui, j'ai fait xcopy /?
pour voir toutes les options
B. /T
aussi ne crée pas de répertoire vide de la structure
C. je ne peux pas aller à la source dossier a\b\c\d\
et exécuter xcopy . <dest>
source d'informationauteur Pulak Agrawal | 2011-11-29
Vous devez vous connecter pour publier un commentaire.
Mise à JOUR
J'ai supprimé ma réponse précédente sur l'utilisation de
ROBOCOPY
. Je crois que la suite va faire ce que vous souhaitez à l'aide deXCOPY
.En supposant que votre structure de dossier comme ceci:
Exécuter
XCOPY
comme ceci:Note le
*
danssomething*.java
.Le problème, c'est que vous êtes de spécifier le fichier à copier dans la source. xcopy ne pas créer la structure de dossiers dans ce cas. Toutefois, si vous modifiez votre appel à xcopy pour
xcopy *.java C:\myfolder /s/y
il copie la .java fichiers et la structure des dossiers. Vous devez spécifier un générique pour cet appel à fonctionner comme vous le souhaitez. Si vous voulez seulement de copier des fichiers spécifiques, vous aurez à régler l'appel à xopy, par exemple:
xcopy something.jav* C:\myfolder /s/y
Modifier
Vous dites que vous obtenez la liste des fichiers à copier à partir d'une autre commande. Si vous pouvez produire cette liste de fichiers dans un fichier texte, vous pouvez effectuer les opérations suivantes:
FOR /F "tokens=* delims=," %F in (d:\test\list.txt) DO xcopy src\%~nxF* .\dest /S /Y
Ce que cette commande n'est lire un fichier texte ("d:\test\list.txt" dans ce cas), lire chaque ligne et pour chaque fichier, exécutez la commande xcopy, l'ajout d'un générique à la fin du nom de fichier pour s'assurer qu'il crée la structure de dossier.
Je suis en supposant ici que:
FOR
commande.Vous pouvez également utiliser le formulaire suivant:
FOR /F "tokens=* delims=," %F in ('cmd') DO xcopy src\%~nxF* .\dest /S /Y
où cmd doit être remplacer par la commande que vous utilisez pour générer votre liste de fichiers à copier.
Notez que si vous utilisez cette
FOR
de commande dans un fichier de commandes, vous devez remplacer%F
avec%%F
(et%~nxF*
avec%%~nxF*
).J'ai eu un coup d'oeil à la commutateurs de xcopy et vous pouvez copier la structure de répertoire avec /T, mais il ne faut pas copier les répertoires vides, vous pouvez remplacer ce /E. Donc, votre commande devrait ressembler à ceci:
Espérons que cette aide!
Afin d'obtenir
C:\destinationfolder\a\b\c\d\something.java
XCOPY a besoin de savoir combien deC:\sourcefolder\a\b\c\d\something.java
à dupliquer.Vous pouvez utiliser:
Juste être conscient que cela peut avoir pour effet secondaire de la copie
C:\sourcefolder\oops\something.java
àC:\destinationfolder\oops\something.java
ainsi que d'autres matches poursomething*.java
sousC:\sourcefolder\
.