У меня есть необходимость удаления всех папок 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: Когда я запускаю ваш скрипт, я получаю сообщение об ошибке ниже. Есть идеи?
windows-7
command-line
batch-file
Нам Г ВУ
источник
источник
for \/d \/r ...
- почему двойная косая черта вместоfor /d /r ...
? И запуск «полной» версии с/q
в конце - как я заявляю - удаляет все без предупреждения, поэтому не возвращает никаких выходных данных (т. Е. Он не сообщает вам, когда он работает, только при наличии ошибки), вы уверены, что второй работать выше не работает правильно?for / %d in
и не запускается ваша командаfor /d /r . %d in
- вы должны использовать всю команду ниже, каждый бит имеет свою функцию и важен.start
и посмотреть, что произойдет. Не идеально, но мне интересно, может ли это помочь.Ответы:
На это уже было дано ответ по поводу переполнения стека, откуда я и взял основной смысл этого ответа.
Попробуйте следующую команду, вы можете запустить ее изнутри
cmd
:Если вам нужно изменить другие папки, просто добавьте новые элементы в
(bin,obj)
набор в середине команды.Это удалит все совпадения без предупреждения и без использования корзины - так что, если вы хотите немного дополнительной безопасности, откажитесь
/q
от вызова доrd
в конце, и система должна спрашивать вас перед каждым удалением.Если вы собираетесь запускать команду изнутри пакетного файла , вам нужно будет заменить каждый экземпляр переменной
%d
с%%d
, например , так:Согласно конверсии в комментариях к вопросу
Если команда отказывается запускаться в командном файле (здесь невозможно выполнить репликацию), попробуйте добавить к команде префикс
start
. Хотя это запустит процесс для одновременного запуска с командным файлом, что может вызвать другие проблемы, скорее всего, он будет работать правильно.Кроме того, если у вас есть файлы с именами
obj
илиbin
внутри дерева папок, над которыми работает команда, вы получите сообщение об ошибке для каждого найденного файла с соответствующим именем. Эти сопоставленные файлы не удаляются и не должны мешать команде удалять то, что должны. Другими словами, их можно безопасно игнорировать.источник
Эти команды должны работать на cmd.
del * .obj
del * .bin
источник
Просто сделать
источник