На этот вопрос ранее уже был дан ответ о переполнении стека, откуда я и взял основной смысл этого ответа.
Попробуйте следующую команду, вы можете запустить ее из cmd:
for /d /r . %d in (bin,obj) do @if exist "%d" rd /s/q "%d"
Если вам нужно изменить другие папки, просто добавьте новые элементы в набор (bin,obj) в середине команды.
Это удалит все совпадения без предупреждения и без использования корзины - так что, если вам нужна дополнительная безопасность, в конце удалите /q из вызова к rd , и система должна будет спрашивать вас перед каждым удалением.
for /d /r . %d in (bin,obj) do @if exist "%d" rd /s "%d"
Если вы намереваетесь запустить команду из пакетного файла, вам нужно заменить каждый экземпляр переменной %d на %%d , например, так:
for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"
OR
for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s "%%d"
Согласно конверсии в комментариях к вопросу
Если команда отказывается запускаться в командном файле (здесь невозможно выполнить репликацию), попробуйте добавить префикс команды к start . Хотя это и запустит процесс для одновременного запуска с командным файлом, что может вызвать другие проблемы, скорее всего, он будет работать правильно.
Кроме того, если в дереве папок, над которым работает команда, есть файлы с именем obj или bin , то вы получите сообщение об ошибке для каждого вложенного файла с соответствующим именем. Эти совпадающие файлы не удаляются и не должны мешать команде удалять то, что должны. Другими словами, их можно безопасно игнорировать.