Script para automatizar copiar archivos con un patrón en la red

0

Estoy tratando de automatizar algunas tareas ... Tengo que hacer un trabajo de desarrollo en una máquina y otras partes en otra máquina, con comunicación a través de un recurso compartido de red.

Me gustaría copiar ciertos archivos, no los directorios completos, que pueden contener muchos elementos de compilación adicionales, algunos de ellos grandes.

Algo como

set source="C:\Users\me\Documents\sourcefolder"
set dest="\\SHARE\FOLDER\me\destfolder"
xcopy %source%+"*.cpp" %dest%

¿Cómo puedo hacer un comando como este? ¿copiar todos los archivos con un patrón dado (como * .cpp) desde el origen al destino?

Además, ¿se puede hacer recursivamente para todas las carpetas dentro de la fuente?

Editar:

Molesto

xcopy "C:\Users\me\Documents\sourcefolder\*.cpp" "\\SHARE\FOLDER\me\destfolder\"

(el primer intento no funcionó porque no sabía que debía hacer un archivo de bat. Gracias Saggio.)

Aún así ... para obtener los mejores resultados, para una estructura de directorios compleja me gustaría poder usar variables y tal vez copiar de forma recursiva, hay muchos directorios que debo copiar.

Además, los patrones que quiero copiar son algo así como "todos los archivos con extensión .cpp, excepto aquellos que comienzan con moc_" o "" todos los archivos con extensión .h, excepto aquellos que comienzan con ui_ "

Podría copiar y luego borrar los que no quiero, supongo ... ¿Pero hay una mejor manera?

Thalia
fuente
no podrías simplemente hacer xcopy %source%\*.cpp %dest%?
Saggio
Estoy intentando ... hasta ahora recibo un error sobre compatibilidad ... y cuando intento usar la pestaña "Compatibilidad" para ejecutar, no se produce ningún error, pero tampoco pasa nada.
Thalia
¿Qué errores estás viendo específicamente?
Richard Turner
2
¿Por qué estás creando un archivo ejecutable? Parece que move.exe es x86 y estás en un entorno x64. Ya que funciona ejecutándolo directamente desde la línea cmd, tal vez solo cree un a *.bat script de archivo en lugar de un ejecutable de pleno derecho?
Saggio
1
@Saggio gracias, ahora me siento ridículo ... No sabía cómo crear un script de Windows ...
Thalia

Respuestas:

0

No listaste tu SO y tu entorno Si puedes usar robocopy Tiene todas las herramientas que necesitas para hacer esto dependiendo de tus detalles:

robocopy% source%% dest% * .cpp / s

Copiará todos los archivos cpp de la fuente a dest.

Incluye muchas otras opciones para automatizar esta tarea en función de exactamente lo que desea. acaba de hacer un robocopy /? y los listará. Por ejemplo, puedes hacer una prueba de robocopia que solo muestre lo que habría hecho si hubiera sido real.  / L :: Solo lista: no copie, marque ni borre ningún archivo.

bvaughn
fuente