
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 /r
in FOR
percorre todos os arquivos enraizados no diretório fornecido. O /y
in move
suprime 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 %%A
em um arquivo em lote.