Exclui arquivos em uma árvore, mas apenas se eles estiverem em uma subpasta denominada

0

Eu quero usar del para excluir arquivos de um tipo específico dentro de uma árvore grande, mas SOMENTE SE eles estiverem em uma subpasta nomeada.

Por exemplo, para esses arquivos:

\test\sample.jpg
\test\fred\pics\sample.jpg
\test\jenny\sample.jpg
\test\fred\pics\sample.jpg

Desejo executar um comando da pasta de teste \ test \ para excluir * .jpg (provavelmente del usando a opção /S ), mas apenas os que estão nas pastas chamadas \pics .

Importante: as pastas pai (neste exemplo 'jenny' e 'fred') são desconhecidas.

Então, uma execução bem-sucedida deixaria isso:

\test\sample.jpg
\test\jenny\sample.jpg
    
por user12824 19.07.2018 / 18:42

1 resposta

1

Use for /r X:\path\test /D %A in (pics.?) do @Del "%~fA\*.jpg" o curinga% .? é necessário para o comando funcionar.

Árvore de amostra / F antes:

> tree /F
└───test
    │   sample.jpg
    ├───fred
    │   └───pics
    │           sample.jpg
    └───jenny
        │   sample.jpg
        └───pics
                sample.jpg

e depois de executar a linha cmd:

> tree /F
└───test
    │   sample.jpg
    ├───fred
    │   └───pics
    └───jenny
        │   sample.jpg
        └───pics

Em um arquivo de lote, você precisa dobrar o %A - > %%A

@Echo off
for /r X:\path\test /d %%A in (pics.?) do Del "%%~fA\*.jpg"
    
por 19.07.2018 / 21:45