Utilidad: Copiar un archivo a todas las subcarpetas de cierto nombre

Post original en JASoft.org: http://www.jasoft.org/Blog/post/Utilidad-Copiar-un-archivo-a-todas-las-subcarpetas-de-cierto-nombre.aspx

CopyFilesAyer necesité hacer precisamente eso: tenía varias carpetas de primer nivel con una estructura de subcarpetas muy grande y llena de niveles. Dentro de éstas había una serie de carpetas -todas con el mismo nombre- en las que debía copiar un determinado archivo o, si existía, sobrescribirlo con el nuevo. Significaba revisar miles de carpetas en intrincados niveles, localizar las que se llamaban de determinada forma, y copiar dentro de éstas el archivo. Hacer algo así a mano para cada caso me hubiera llevado horas, por lo que estuve buscando la manera de automatizarlo.

Primero lo intenté usando una simple línea de comandos y la instrucción FOR y también la instrucción FORFILES. Estuve bastante tiempo intentándolo, pero no fui capaz de conseguirlo :-S

Así que al final invertí un rato en crear un programa de línea de comandos en C# que hiciera exactamente lo que yo necesitaba, y debería haber empezado por ahí, pues me hubiera ahorrado un precioso tiempo.

El programa se llama "CopiarArchivoASubcarpetas.exe" y toma tres parámetros:

  • La carpeta en la que se deben buscar las subcarpetas con las que queremos trabajar. Puede ser una ruta absoluta o simplemente el nombre de una carpeta dentro de la carpeta actual en la que tenemos abierta la línea de comandos, ya que la resolverá en ese caso.
  • El nombre de las subcarpetas a buscar. Esto es simplemente una simple cadena.
  • El archivo que queremos copiar. Nuevamente puede ser una ruta absoluta o una relativa a la carpeta actual de la línea de comandos.

Si lo ejecutamos sin parámetros o con -? o /? muestra una ayuda sencilla.

Por ejemplo:

CopiarArchivoASubcarpetas.exe C:MiCarpeta SubCarpeta C:NuevoArch.htm

copiará el archivo "NuevoArch.htm" a todas las carpetas que se llamen "SubCarpeta" dentro del directorio C:MiCarpeta

Si la línea de comandos la tenemos abierta en C:, podríamos escribir simplemente:

CopiarArchivoASubcarpetas.exe MiCarpeta SubCarpeta NuevoArch.htm

ya que resuelve la ruta automáticamente.

Es una utilidad muy simple, que se escribe y se prueba en un rato, pero espero que a más de uno le pueda ahorrar tiempo si se encuentra con una necesidad similar en el futuro.

La puedes descargar, junto con el archivo .cs de código fuente, desde aquí: CopiarArchivoASubcarpetas.zip (3,26 Kb)

Sin categoría

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *