31

Мне нужно удалить все папки bin и obj в папке на моем ПК. Итак, я думаю о пакетном файле, чтобы сделать это, но я не жалуюсь о пакетном файле в Windows. Пожалуйста помоги.

[Редактировать]

После обсуждения с пользователем DMA57361 я пришел к текущему решению (хотя проблема все еще остается, см. Наши комментарии):

Создайте файл .bat и вставьте следующую команду:

start for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s/q "%%d"

ИЛИ ЖЕ

start for /d /r . %%d in (bin,obj) do @if exist "%%d" rd /s "%%d"

@ DMA57361: Когда я запускаю ваш скрипт, я получаю сообщение об ошибке ниже. Любая идея?

альтернативный текст

2 ответа2

42

На этот вопрос ранее уже был дан ответ о переполнении стека, откуда я и взял основной смысл этого ответа.

Попробуйте следующую команду, вы можете запустить ее из 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 , то вы получите сообщение об ошибке для каждого вложенного файла с соответствующим именем. Эти совпадающие файлы не удаляются и не должны мешать команде удалять то, что должны. Другими словами, их можно безопасно игнорировать.

0

Просто делать

del /s /p bin
del /s /p obj

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