Posso examinar os subdiretórios de um diretório e copiar um arquivo de uma determinada extensão para uma nova pasta?

Posso examinar os subdiretórios de um diretório e copiar um arquivo de uma determinada extensão para uma nova pasta?

Novato aqui - eu tenho este script de terminal que parece não funcionar no Windows para pesquisar nos subdiretórios de um diretório todos os arquivos com uma determinada extensão e movê-los para um novo diretório.

find ./ -name '*.xlsx' -exec cp -prv '{}' \Documents\...' ";"

Eu queria saber se a mesma coisa poderia ser feita usando um MATLAB ou qualquer outra forma de script do Windows. Meu objetivo final é amalgamar os dados de todos esses arquivos xlsx em um único arquivo. Obrigado pela ajuda antecipadamente.

Responder1

Para percorrer um diretório em cmd.exe:

for /r "C:\Your\Directory" %A in (*.xlsx) do (move /y "%A" "C:\New\Directory\%~nxA")

O /rin FORpercorre todos os arquivos enraizados no diretório fornecido. O /yin movesuprime um prompt que pergunta se a movimentação do arquivo está OK. Usar aspas em torno dos caminhos de arquivo/diretório é uma prática recomendada caso haja espaços. Isso percorrerá as subpastas por padrão.

Referência:Comandos de loop FOR

Se você gosta de uma solução em lote, prefiro configurá-la com variáveis ​​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

A principal diferença (na minha opinião) comparando o lote com a linha de comando simples é que é um pouco mais fácil de ajustar quando você pode simplesmente voltar e editar uma variável sem ter que alterar potencialmente um caminho várias vezes no mesmo arquivo. Observe também que seu parâmetro %Aé alterado %%Aem um arquivo em lote.

informação relacionada