web-dev-qa-db-fra.com

/ exclude dans xcopy uniquement pour un type de fichier

J'ai un fichier de commandes pour copier les fichiers de Visual Studio dans mon dossier Web. Je souhaite copier tous les fichiers de mon projet Web, à l’exception des fichiers * .cs. Je n'arrive pas à obtenir que cela fonctionne:

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

Des conseils? Je viens d'obtenir le code de sortie 4 lorsque j'essaie de l'exécuter.

61
Matt Dell

Le /EXCLUDE: argument appelle un fichier contenant une liste de fichiers exclus.

Alors créez un fichier nommé excludedfileslist.txt contenant:

.cs\

Puis une commande comme celle-ci:

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

Sinon, vous pouvez utiliser Robocopy , mais vous devrez installer/copier un fichier robocopy.exe aux machines.

Mise à jour

Un commentaire anonyme qui indiquait simplement "Cette solution exclut également le fichier css!"

C'est vrai créer un excludedfileslist.txt fichier ne contient que:

.cs

(notez pas de backslash à la fin)

Exclura également tous les éléments suivants:

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

Parfois, les gens ne lisent pas et ne comprennent pas l'aide de la commande XCOPY. Voici un élément que je voudrais souligner:

Utiliser/exclude

  • 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 alors 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 indiqué dans l'exemple, "tous les fichiers portant l'extension .obj sont exclus", mais il n'est pas précisé qu'il exclut également les fichiers ou les répertoires nommés file1.obj.tmp ou dir.obj.output\example2.txt.

Il y a un moyen de contourner .css Les fichiers étant également exclus, changez le excludedfileslist.txt fichier à contenir simplement:

.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é complété sur une ligne de commande Windows 7 et soumis à un nouveau test 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.

111
Dean Taylor

Dans mon cas, je devais commencer une liste d'extensions à exclure à partir de la deuxième ligne car xcopy ignorait la première ligne.

7
VLKxCOOL

Remplacez * .cs par .cs dans le fichier excludefileslist.txt

5
Taiwo

Pour exclure plusieurs types de fichiers, vous pouvez utiliser '+' pour concaténer d'autres listes. Par exemple:

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

Source: http://www.tech-recipes.com/rx/2682/xcopy_command_using_the_exclude_flag/

1
Leopoldo Sanczyk