Как рекурсивно удалить определённую папку в директории?
Есть очень много проектов с папками, которые нужно удалить(node_modules например).
Как с помощью node или cmd команды рекурсивно удалить определённую папку во всех вложенных папках?
Ответы (2 шт):
Могу предложить такую команду для cmd:
(for /R "%WHERE%" %A in (.) do @echo %A) | find "\%WHAT%\." | for /f %A in ('more') do @rd /s /q "%A"
Где:
%WHERE% - переменная содержащая путь к каталогу где искать цели;
%WHAT% - переменная содержащее полное имя папки, т.е. содержимое между двумя обратными слэшами в пути.
Вместо переменных можно использовать литералы, конечно.
Пояснения:
Группа команд состоит из трёх частей разделённых прямой чертой (|):
- рекурсивный обход базового каталога с выводом путей
- поиск имени целевого каталога в конце пути, свидетельствующее о необходимости его обработки
- обработка списка подходящих путей, полученном на втором шаге. В данном случае, вызов команды удаления.
Для отладки можно использовать следующую команду, которая выведет список папок для удаления:
(for /R "%WHERE%" %A in (.) do @echo %A) | find "\%WHAT%\." | for /f %A in ('more') do @echo # %A
Для использования команды в пакетном файле необходимо заменить %A на %%A.
Более простой и хороший вариант чем первый:
for /R "%WHERE%" %A in (.) do @if /i "%~nxA"=="%WHAT%" @rd /s /q "%A"
%WHERE% - либо заменить на путь в котором искать, либо установить соответствующую переменную, например так:
set WHERE=c:\users\
%WHAT% - заменить на имя искомого каталога, либо установить переменную как указано выше.