subcarpetas sobreescribir preguntar parametros para ejemplos copiar carpetas bat archivos batch-file xcopy

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.