2010-11-23 8 views
52

J'ai un fichier batch pour copier des fichiers de Visual Studio vers mon dossier Web. Je veux copier tous les fichiers dans mon projet web, SAUF les fichiers * .cs. Je ne peux pas sembler obtenir ceci pour fonctionner:/exclude dans xcopy juste pour un type de fichier

xcopy /r /d /i /s /y /exclude:".cs" C:\dev\apan C:\web\apan 

Des conseils? Je reçois juste le code de sortie 4 quand j'essaye d'exécuter ceci.

Répondre

95

L'argument /EXCLUDE: attend un fichier contenant une liste de fichiers exclus.

Alors créez aa fichier appelé "excludedfileslist.txt" contenant:

.cs\ 

Ensuite, une commande comme ceci:

xcopy /r /d /i /s /y /exclude:excludedfileslist.txt C:\dev\apan C:\web\apan 

Sinon, vous pouvez utiliser Robocopy, mais nécessiterait l'installation/la copie d'un robocopy.exe aux machines.

Mise à jour

Un modifier anonyme commentaire qui dit simplement « Cette solution exclut également le fichier css! »

Cela est vrai la création d'un « fichier excludedfileslist.txt contiennent juste:

.cs 

(notez pas backslash sur la fin)

exclut également les éléments suivants:

  • file1.cs
  • file2.css
  • dir1.cs\file3.txt
  • dir2\anyfile.cs.something.txt

Parfois, les gens ne lisent pas ou ne comprennent pas l'aide de la commande XCOPY, est un élément ici, je voudrais souligner:

Utiliser/exclure

  • Répertoriez chaque chaîne dans une ligne distincte dans chaque fichier. Si l'une des chaînes répertoriées correspond à une partie du chemin absolu du fichier à copier, ce fichier est exclu du processus de copie. Par exemple, si vous spécifiez la chaîne "\ Obj \", vous excluez tous les fichiers situés sous le répertoire Obj. Si vous spécifiez la chaîne ".obj", vous excluez tous les fichiers portant l'extension .obj.

Comme l'exemple indique qu'il exclut all files with the .obj extension mais il ne dit pas qu'il exclut également les fichiers ou répertoires nommés file1.obj.tmp ou dir.obj.output\example2.txt.

Il existe un moyen de contourner .css fichiers étant également exclu, modifiez le "excludedfileslist.txt » pour contenir juste:

.cs\ 

(notez la barre oblique inverse à la fin)

Voici une séquence de test complète pour votre référence.

C:\test1>ver 

Microsoft Windows [Version 6.1.7601] 

C:\test1>md src 
C:\test1>md dst 
C:\test1>md src\dir1 
C:\test1>md src\dir2.cs 
C:\test1>echo "file contents" > src\file1.cs 
C:\test1>echo "file contents" > src\file2.css 
C:\test1>echo "file contents" > src\dir1\file3.txt 
C:\test1>echo "file contents" > src\dir1\file4.cs.txt 
C:\test1>echo "file contents" > src\dir2.cs\file5.txt 

C:\test1>xcopy /r /i /s /y .\src .\dst 
.\src\file1.cs 
.\src\file2.css 
.\src\dir1\file3.txt 
.\src\dir1\file4.cs.txt 
.\src\dir2.cs\file5.txt 
5 File(s) copied 

C:\test1>echo .cs > excludedfileslist.txt 
C:\test1>xcopy /r /i /s /y /exclude:excludedfileslist.txt .\src .\dst 
.\src\dir1\file3.txt 
1 File(s) copied 

C:\test1>echo .cs\ > excludedfileslist.txt 
C:\test1>xcopy /r /i /s /y /exclude:excludedfileslist.txt .\src .\dst 
.\src\file2.css 
.\src\dir1\file3.txt 
.\src\dir1\file4.cs.txt 
3 File(s) copied 

Ce test a été effectué sur un ordinateur Windows 7 ligne de commande et retesté sur Windows 10 "10.0.14393"

Notez que le dernier exemple exclut .\src\dir2.cs\file5.txt qui peut être ou ne pas être inattendu pour vous

+0

Oh, c'est un peu gênant parce que je suis en train de distribuer à mon équipe de développement. Y a-t-il des solutions de rechange à cela? –

+1

Réponse mise à jour pour inclure l'option robocopy. –

+8

Ok, je l'ai eu! Je peux juste créer le fichier au début du fichier batch: echo .cs> C: \ nocs.txt –

5

changement * .cs à .cs dans le excludefileslist.txt

7

Dans mon cas, je devais commencer une liste d'extensions de la exclure deuxième ligne parce xcopy ignoré la première ligne.

+1

Je viens juste d'avoir ceci et laisser la première ligne du fichier texte d'exclusion vide était la réponse - quelqu'un sait pourquoi la première ligne doit être vide? –

Questions connexes