![¿Puedo revisar los subdirectorios de un directorio y copiar un archivo de una determinada extensión a una nueva carpeta?](https://rvso.com/image/1595495/%C2%BFPuedo%20revisar%20los%20subdirectorios%20de%20un%20directorio%20y%20copiar%20un%20archivo%20de%20una%20determinada%20extensi%C3%B3n%20a%20una%20nueva%20carpeta%3F.png)
Novato aquí: tengo este script de terminal que no parece funcionar en Windows para buscar en los subdirectorios de un directorio todos los archivos con una determinada extensión y moverlos a un nuevo directorio.
find ./ -name '*.xlsx' -exec cp -prv '{}' \Documents\...' ";"
Me preguntaba si se podría hacer lo mismo usando MATLAB o de cualquier otra forma en el script de Windows. Mi objetivo final es fusionar los datos de todos estos archivos xlsx en un solo archivo. Gracias por la ayuda por adelantado.
Respuesta1
Para recorrer un directorio en cmd.exe:
for /r "C:\Your\Directory" %A in (*.xlsx) do (move /y "%A" "C:\New\Directory\%~nxA")
El /r
in FOR
recorre todos los archivos rooteados en el directorio dado. El /y
in move
suprime un mensaje que le pregunta si está bien mover el archivo. Usar comillas alrededor de las rutas de archivos/directorios es una buena práctica en caso de que haya espacios. Esto recorrerá las subcarpetas de forma predeterminada.
Referencia:PARA comandos en bucle
Si te apetece una solución por lotes, prefiero configurarla con variables como esta:
@echo off
set "old=C:\Your\Directory"
set "new=C:\New\Directory"
for /r "%old%" %%A in (*.xlsx) do (
move /y "%%A" "%new%\%%~nxA"
)
pause
La principal diferencia (en mi opinión) al comparar el lote con la línea de comandos simple es que es un poco más fácil de modificar cuando puedes regresar y editar una variable sin tener que cambiar potencialmente una ruta varias veces en el mismo archivo. También tenga en cuenta que su parámetro %A
se cambia %%A
en un archivo por lotes.