¿Puedo revisar los subdirectorios de un directorio y copiar un archivo de una determinada extensión a una nueva carpeta?

¿Puedo revisar los subdirectorios de un directorio y copiar un archivo de una determinada extensión a una nueva carpeta?

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 /rin FORrecorre todos los archivos rooteados en el directorio dado. El /yin movesuprime 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 %Ase cambia %%Aen un archivo por lotes.

información relacionada