Ayer 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)