batch-file - sobreescribir - xcopy parametros
/ Excluir en xcopy solo para un tipo de archivo (4)
Tengo un archivo por lotes para copiar los archivos de Visual Studio a mi carpeta web. Quiero copiar todos los archivos en mi proyecto web, EXCEPTO para los archivos * .cs. Parece que no puedo hacer que esto funcione:
xcopy /r /d /i /s /y /exclude:".cs" C:/dev/apan C:/web/apan
¿Algun consejo? Acabo de obtener el código de salida 4 cuando intento ejecutar esto.
Cambie * .cs a .cs en excludefileslist.txt
El argumento /EXCLUDE:
espera un archivo que contiene una lista de archivos excluidos.
Entonces crea un archivo llamado "excludedfileslist.txt" que contenga:
.cs/
Entonces un comando como este:
xcopy /r /d /i /s /y /exclude:excludedfileslist.txt C:/dev/apan C:/web/apan
Alternativamente, podría usar Robocopy , pero requeriría instalar / copiar un robocopy.exe
en las máquinas.
Actualizar
Una edición de comentarios anónimos que simplemente dice "¡Esta solución excluye también el archivo css!"
Esto es cierto al crear un archivo "excludedfileslist.txt" que contiene solo:
.cs
(tenga en cuenta que no hay barra invertida en el extremo)
También excluirá todo lo siguiente:
-
file1.cs
-
file2.css
-
dir1.cs/file3.txt
-
dir2/anyfile.cs.something.txt
A veces las personas no leen o entienden la ayuda del comando XCOPY, aquí hay un elemento que me gustaría destacar:
Usar / excluir
- Lista cada cadena en una línea separada en cada archivo. Si alguna de las cadenas enumeradas coincide con alguna parte de la ruta absoluta del archivo que se va a copiar, ese archivo se excluirá del proceso de copia. Por ejemplo, si especifica la cadena "/ Obj /", excluirá todos los archivos debajo del directorio Obj. Si especifica la cadena ".obj", excluirá todos los archivos con la extensión .obj.
Como el ejemplo indica, excluye all files with the .obj extension
pero no establece que también excluya archivos o directorios llamados file1.obj.tmp
o dir.obj.output/example2.txt
.
Hay una forma de evitar los archivos .css
también, cambie el archivo "excludedfileslist.txt" para que contenga solo:
.cs/
(observe la barra invertida en el extremo).
Aquí hay una secuencia de prueba completa para su referencia:
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
Esta prueba se completó en una línea de comando de Windows 7 y se volvió a probar en Windows 10 "10.0.14393".
Tenga en cuenta que el último ejemplo excluye ./src/dir2.cs/file5.txt
que puede o no ser inesperado para usted.
En mi caso, tuve que iniciar una lista de extensiones excluidas de la segunda línea porque xcopy ignoró la primera línea.
Para excluir varios tipos de archivos, puede usar ''+'' para concatenar otras listas. Por ejemplo:
xcopy /r /d /i /s /y /exclude:excludedfileslist1.txt+excludedfileslist2.txt C:/dev/apan C:/web/apan
Fuente: http://www.tech-recipes.com/rx/2682/xcopy_command_using_the_exclude_flag/