Я хочу использовать del для удаления файлов определенного типа в большом дереве, но ТОЛЬКО ЕСЛИ они находятся в именованной подпапке.

Например, для этих файлов:

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

Я хочу , чтобы запустить команду из тестовой папки \ Test \ удалить * .jpg (предположительно del с помощью переключателя /S , но только те , которые находятся в папках \pics

Важно: родительские папки (в этом примере 'jenny' и 'fred') неизвестны.

Итак, успешный запуск оставил бы это:

\test\sample.jpg
\test\jenny\sample.jpg

1 ответ1

1

Используйте for /r X:\path\test /D %A in (pics.?) do @Del "%~fA\*.jpg" фиктивным символом подстановки .? необходим для работы команды.

Образец дерева /F перед:

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

и после запуска строки cmd:

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

В пакетном файле вы должны удвоить %A -> %%A

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .