Как рекурсивно удалить определённую папку в директории?

Есть очень много проектов с папками, которые нужно удалить(node_modules например).
Как с помощью node или cmd команды рекурсивно удалить определённую папку во всех вложенных папках?


Ответы (2 шт):

Автор решения: Joker

Могу предложить такую команду для cmd:

(for /R "%WHERE%" %A in (.) do @echo %A) | find "\%WHAT%\." | for /f %A in ('more') do @rd /s /q "%A"

Где:

%WHERE% - переменная содержащая путь к каталогу где искать цели;

%WHAT% - переменная содержащее полное имя папки, т.е. содержимое между двумя обратными слэшами в пути.

Вместо переменных можно использовать литералы, конечно.

Пояснения:

Группа команд состоит из трёх частей разделённых прямой чертой (|):

  1. рекурсивный обход базового каталога с выводом путей
  2. поиск имени целевого каталога в конце пути, свидетельствующее о необходимости его обработки
  3. обработка списка подходящих путей, полученном на втором шаге. В данном случае, вызов команды удаления.

Для отладки можно использовать следующую команду, которая выведет список папок для удаления:

(for /R "%WHERE%" %A in (.) do @echo %A) | find "\%WHAT%\." | for /f %A in ('more') do @echo # %A

Для использования команды в пакетном файле необходимо заменить %A на %%A.

→ Ссылка
Автор решения: Joker

Более простой и хороший вариант чем первый:

for /R "%WHERE%" %A in (.) do @if /i "%~nxA"=="%WHAT%" @rd /s /q "%A"

%WHERE% - либо заменить на путь в котором искать, либо установить соответствующую переменную, например так:

set WHERE=c:\users\

%WHAT% - заменить на имя искомого каталога, либо установить переменную как указано выше.

→ Ссылка