Меню

Ошибка 145 папка не пуста

Если появился ошибка «0x80070091 папка не пуста», как удалить в таком случае эту папку? В данной заметке дам простейшее решение для любых версий и сборок операционной системы Windows.

Дело в том, что с этой проблемой может однажды столкнуться вообще любой пользователь системы, даже если пытается просто удалить свою личную папку, не трогая ничего из системных и защищенных.

И ведь каталог действительно пустой, в нем ничего не показывает ни сама Windows, при включении скрытых и системных файлов, ни любой другой софт.

Вот как на изображении выше выглядит ошибка «0x80070091 папка не пуста», появляющаяся в системах Windows. Чаще всего появления являются сбои в работе жесткого диска.

Любой диск, будь то HDD или современные SSD в ходе своей работы не застрахованы от появления ошибок файловой системы, поврежденных секторов и прочих, из-за сбоев питания (например, внезапные перезагрузки, выключения), из-за резких прерываний установок обновления и других процессов системы (касается любых, а не только Windows).

Поэтому и один из основных способов устранения такой проблемы — проверить диск через специальную утилиту (системную программу) и автоматически исправить ошибки. Но есть и другие варианты, когда этот метод может не сработать.

Основной способ — исправление ошибок на диске

В одной из ранее выпущенных статей (здесь) я уже рассказывал о том как проверить любой диск в Windows на ошибки. Сейчас продублирую самое основное, что потребуется вам для решения текущей проблемы:

  1. Выясните, на каком диске расположена та папка, которая не удаляется из-за ошибки «0x80070091 папка не пуста». Потому что именно этот диск будем исправлять.
  2. Откройте раздел «Этот компьютер» (или «Компьютер» в более старых ОС Windows), кликните правой кнопкой мыши по нужному диску и выберите «Свойства».
  3. В открывшемся окне перейдите на вкладку «Сервис» и нажимаем «Проверить».
  4. Даже если система сообщит, что проверка диска не требуется, нажмите «Проверить диск».

Ожидаем завершения проверки и на всякий случай еще перезагружаем компьютер. Я уже привык делать ребут компьютера после любой выполненной операции с виндой 🙂 И после этого пробуем снова удалить папку.

Работает, ошибки «0x80070091 папка не пуста» больше нет? Отлично! Значит, проблема была именно в проблемах с диском, которые вы поправили и все стало работать правильно.

Если вдруг не получилось запустить программу проверки диска через графический интерфейс, попробуйте еще выполнить то же самое через командную строку, следующим образом:

  1. Через команду «Выполнить» (открывается комбинацией клавиш Win+R) наберите cmd и откройте. Подробнее о том, зачем нужна функция «выполнить» и как ей пользоваться, рассказывал в другой заметке »
  2. В открывшейся командной строке наберите команду chkdsk c: /f Здесь «с» — это буква диска, поэтому если папка находится у вас на другом, например, на «d», то в той команде нужно изменить букву.
  3. Нажмите Enter на клавиатуре и ожидайте окончания проверки.
  4. Если в окне появится вопрос о том, что для продолжения необходимо перезагрузить компьютер, то введите символ «Y» и еще раз нажмите Enter, после чего перезагрузите компьютер.

Дополнительные варианты

Если вдруг не помог, вариант с исправлением ошибок на диске, то попробуйте следующее:

  1. Переименовать папку, которая не удаляется, после чего еще раз попробовать удалить.
  2. Включите отображение скрытых файлов и папок (рассказывал об этом здесь) и проверьте, точно ли папка пустая. Может другие данные в ней просто скрытые? Если это так, удалите сначала их.
  3. Попробуйте удалить папку через файловый менеджер, например, Far Manager.
  4. Должно получиться удалить «некорректную» папку через другой компьютер (лучше с другой операционной системой, например, Mac OS, Linux) или с Live CD диска.

Основные выводы

Теперь, если вдруг появится у вас ошибка 0x80070091 папка не пуста, то как удалить ее вы уже будете знать. Что-то из перечисленного определенно должно помочь, потому что в ином случае неудаляемая папка может быть только если она системная, занятая какими-то файлами Windows. Но в таком случае и ошибку вы получите другую.

Накрайняк вообще можно ничего не делать с этой несчастной папкой, оставить ее на компьютере и забыть 🙂 Главное, чтобы места она много не занимала. Ну а я сам по себе перфекционист и если хоть что-то на компе не так, я уже не могу нормально работать, хочу сразу починить, тем более, что чаще всего нахожу решение проблемы.

Если появились вопросы, пишите в комментариях, постараемся во всем разобраться и буду рад отзыву, если заметка помогла вам справиться с проблемой 😉

Появление всевозможных сбоев и багов не редкость для операционных систем Windows. Ошибки возникают по разным причинам, как программным, так и аппаратным, они могут быть незначительными или непосредственно влиять на работоспособность системы. С проблемой удаления файлов и каталогов сталкивались практически все пользователи и знают, что выполнить процедуру невозможно при том, что элемент используется, задействован в каком-либо процессе в текущий момент или в случае отсутствия прав доступа. Так, с переименованием, завершением процесса, привлечением утилит для разблокировки, шредеров, получением прав или загрузкой с внешнего накопителя типа LiveCD обычно задача решается. При этом в случае ошибки «Папка не пуста» с кодом 0x80070091 и эти действия не всегда эффективны. Сбой нередко появляется во время использования функции восстановления операционки, например, при попытке возврата к созданной точке или её пересоздании. Рассмотрим подробнее, чем вызвана данная проблема, и как с ней можно справиться.

Что делать если при попытке удаления папки выдаётся ошибка 0x80070091

Причины ошибки 0x80070091

Исправление любого сбоя направлено на устранение источника его возникновения. Так и с ошибкой «Папка не пуста», имеющей код 0x80070091. Если каталог занят каким-то процессом, здесь всё просто, его можно удалить, освободив его от задачи, в том числе методом перезагрузки системы. Другое дело, если проблема носит более серьёзный характер и обеспечена повреждением файловой системы винчестера, что может быть в свою очередь спровоцировано целым рядом факторов, начиная с кривых обновлений, неудачной инсталляции/деинсталляции софта или наличия вирусов, заканчивая нарушением целостности вследствие физических неисправностей жёсткого диска. Рассматривая ошибку «Папка не пуста», можно выделить два варианта её проявления – в процессе восстановления ОС, когда имеются проблемы с содержимым и регистрацией приложений в каталоге Windows Apps, или при попытке удаления любой папки. Уведомление о сбое, как правило, может содержать дополнительную информацию.

0x80070091

В нашем случае здесь указано местоположение проблемного элемента – каталог, находящийся в директории Program Files – Windows Apps. Именно в нём и обитают данные для восстановления операционки, а также могут содержаться остатки от ранее установленных версий системы. Проблема удаления папки возникает по разным причинам. Например, объект продолжает использоваться текущей Windows, из чего следует необходимость завершения процесса для совершения операции или система блокирует доступ к Windows Apps. Кроме того, масштабное распространение сбой получил после обновления КВ 3213968 (регулярные обновления ОС знамениты и не такими сюрпризами). Способов, как исправить ошибку 0x80070091 будет несколько ввиду того, что проблема может быть связана с различными провоцирующими факторами. Поскольку точно причина сбоя неизвестна, применяя поочерёдно каждый из вариантов решения, вы сможете добиться желаемого результата.

Исправляем ошибку

Если вы пытаетесь удалить папку, в то время как с ней работают какие-либо приложения, появление сбоя, имеющего код ошибки 0x80070091, вполне закономерно. Так, процессы должны быть завершены и в случае, когда ПО всё ещё использует объект, требуется отключение работающего софта, в том числе в фоне.

Загрузка системы в чистом режиме

Состояние чистой загрузки применяется при устранении неполадок, возникающих в работе с Windows. Так, используя данный вариант решения, вы сможете выбрать минимум драйверов и программ, с которыми загрузится операционная система, после чего вернуться к процедуре восстановления. Для чистой загрузки выполняем следующее:

Пробуем восстановить систему, вернув её в созданную ранее точку. Деактивируется режим обратным способом.

Переименование папки

Данный нехитрый метод решения заключается в переименовании системного каталога Windows Apps. Для этого выполняем такие манипуляции:

  • Меняем название папки Windows Apps, но сначала нам понадобится получить права на изменение объекта. Запускаем командную строку под учётной записью администратора, где вводим команду TAKEOWN /F «C:Program FilesWindowsApps» /R /D Y.Командная строка
  • Ждём окончания процесса, на это потребуется некоторое время, после чего закрываем консоль.
  • Переходим к проводнику, где в настройках включаем опцию показа системных элементов (в параметрах необходимо отметить пункт «Показывать скрытые файлы, папки и диски»).Отображение скрытых файлов
  • Теперь, используя инструмент Unlocker (для выполнения манипуляций достаточно его портативной версии), выбираем папку Windows Apps и жмём Rename, указываем новое имя, затем нажимаем кнопку Unlock All.

Процедура позволяет переименовать папку, что в ряде ситуаций поможет справиться со сбоем и следующая попытка выполнить восстановление ОС проходит успешно. Иногда удаётся добиться успехов в удалении каталога из-под LiveCD, при этом, если файловая система содержит ошибки, в дальнейшем вероятны новые проблемы, поэтому будем воздействовать на возможный источник неприятности.

Сканирование жёсткого диска на ошибки

Системная утилита CHKDSK (Check Disk) позволяет сканировать диск на ошибки, битые сектора и устранять обнаруженные неисправности. Запустить инструмент можно при помощи командной строки. Необходимо открыть её на правах администратора посредством консоли «Выполнить», где в поле прописать команду cmd и нажать Ctrl+Shift+Enter. То же самое можно сделать, воспользовавшись поиском из меню Пуск, тогда в результатах выдачи нужно нажать ПКМ на названии утилиты и выбрать нужный вариант загрузки инструмента. Приступаем к процедуре:

  • В командной строке, открытой на правах администратора вводим команду chkdsk C: /f /r.
  • Вместо значения «C:/» необходимо подставить имя того диска, где стоит система. Значение f в команде означает выполнение проверки на ошибки и их исправление при обнаружении. Параметр /r отвечает за поиск повреждённых секторов и восстановление их содержимого.
  • При следующем старте системы утилита примется за работу (проверка несистемного диска перезагрузки не требует), потребуется подождать некоторое время до завершения процесса.
  • В итоговом отчёте вы увидите результат проверки.Проверка диска

Нередко данный способ решает проблему появления ошибки 0x80070091, поскольку если файл записан на повреждённом участке, к нему нет доступа. Чтобы содержимое секторов читалось и при необходимости удалилось, выполнять восстановление данных файловой системы необходимо.

Изменение точки возврата

Бывает, что невозможно вернуться к сохранённой точке исключительно по причине удаления конкретного каталога. В таком случае решит проблему возврат к ранней точке. Поскольку во время функционирования ОС возникает немало конфликтов, они впоследствии провоцируют различные ошибки и баги. Возвращаем систему в более раннее состояние, когда подобных проблем не возникало, используя штатный функционал восстановления Windows, и вполне вероятно, что ошибка 0x80070091 больше не побеспокоит.

Открытие доступа к Windows Apps

Ещё один из вариантов, как удалить папку, если в этом препятствует сбой с кодом 0x80070091, предполагает получение доступа к заблокированному объекту, что обеспечит возможность восстанавливать систему или удалять файлы. Выполняем следующее:

Заключение

После выполненных манипуляций вы получите полное право на изменение папки Windows Apps, её можно переименовать (см. выше), перезагрузить устройство и попробовать снова выполнить восстановление системы. Ошибка 0x80070091, хотя и не является критической, доставляет немало неудобств, при этом вышеописанных способов достаточно для исправления сбоя.

Даже новички в компьютерном деле знают, что, если в среде Windows не удаляются папка или файл, значит, нужно либо закрыть использующий их активный процесс (или программу), либо прибегнуть к помощи программ-разблокировщиков типа Unlocker или LockHunter. Однако не всегда таким способом можно удалить неудаляемые данные. Например, когда при их удалении появляется уведомление:

Ошибка 0x80070091 Папка не пуста

Однако в данном случае папка как раз таки и была пустой. Из неё без проблем удалилось всё её содержимое, но сама она отправляться в корзину не хотела никак. Такая системная ошибка ещё и может приводить к подвисанию операционной системы. Как удалить проблемный объект в этом случае?

Ошибка 0x80070091 не даст удалить объект ни одним из традиционных способов борьбы с неудаляемыми данными. Не помогут:

  • Ни переименование;
  • Ни программы-разблокировщики;
  • Ни шредер данных;
  • Ни полный доступ (с правами TrustedInstaller);
  • Ни даже загрузка с внешнего носителя типа LiveDisk. 

Ошибка 0x80070091 связана с проблемами файловой системы. А таковые решаются с помощью штатного средства проверки дисков Windows. Открываем окно свойств раздела диска, на котором находится неудаляемый объект. Во вкладке «Сервис» жмём «Проверить».

Windows обнаружила ошибки. Жмём «Закрыть».

В следующем окне кликаем на единственный возможный вариант «Восстановить диск».

Далее – «Восстановить».

Восстановление прошло успешно. В нашем случае проблемная папка размещалась не на диске (C:), потому не потребовалось даже перезагрузки компьютера.

Теперь неудаляемый ранее объект можно удалить обычным способом. 

  • Remove From My Forums
  • Question

  • Ive recently been seeing this in the wsyncmgr.log…..

    Deleting \?UNCxxxxxxSCCM Update Deployment PackagesBaseline — Windows Update — 10-04-2018 — Server 200822789445-cd5c-417c-80d8-532157dde55e, FAILED, Win32 Error = 145
    SMS_WSUS_SYNC_MANAGER 28/10/2019 17:56:08
    3112 (0x0C28)
    Failed to delete orphaned content folder \xxxxxxxSCCM Update Deployment PackagesBaseline — Windows Update — 10-04-2018 — Server 200822789445-cd5c-417c-80d8-532157dde55e, error 0x91
    SMS_WSUS_SYNC_MANAGER 28/10/2019 17:56:08
    3112 (0x0C28)

    Now error 145 or 0x91 seem to suggest  this means «folder not empty» (could be totally wrong here), I am at a loss as to what the next step is to fix this issue! The Primary site server has full access rights to the folder structure.

    This error is literally filling up the log file with hundreds of entries.. over and over!

    • Edited by

      Monday, October 28, 2019 7:11 PM

  • Remove From My Forums
  • Question

  • Ive recently been seeing this in the wsyncmgr.log…..

    Deleting \?UNCxxxxxxSCCM Update Deployment PackagesBaseline — Windows Update — 10-04-2018 — Server 200822789445-cd5c-417c-80d8-532157dde55e, FAILED, Win32 Error = 145
    SMS_WSUS_SYNC_MANAGER 28/10/2019 17:56:08
    3112 (0x0C28)
    Failed to delete orphaned content folder \xxxxxxxSCCM Update Deployment PackagesBaseline — Windows Update — 10-04-2018 — Server 200822789445-cd5c-417c-80d8-532157dde55e, error 0x91
    SMS_WSUS_SYNC_MANAGER 28/10/2019 17:56:08
    3112 (0x0C28)

    Now error 145 or 0x91 seem to suggest  this means «folder not empty» (could be totally wrong here), I am at a loss as to what the next step is to fix this issue! The Primary site server has full access rights to the folder structure.

    This error is literally filling up the log file with hundreds of entries.. over and over!

    • Edited by

      Monday, October 28, 2019 7:11 PM

У меня есть 2 версии node.js, а именно:

Your environment has been set up for using Node.js 17.1.0 (x64) and npm.

C:WindowsSystem32>nvm list

    16.13.0
    8.16.2

Но когда я пытаюсь использовать первую версию, я получаю эту ошибку: —

C:WindowsSystem32>nvm use 8.16.2
node v8.16.2 (64-bit) is not installed.

И когда я пытаюсь использовать вторую версию, я получаю это: —

C:WindowsSystem32>nvm use 16.13.0
exit status 145: The directory is not empty.

Так, что происходит? Благодарность

6 ответов

Если это машина с Windows, перейдите в C:Program Filesnodejs. Затем переименуйте эту папку в C:Program Filesnodejsx. После этого отметьте «nvm use v.v.v.»


34

Bhabani P
5 Мар 2022 в 08:42

Я встречаю ту же проблему. Я решил как:

Убедитесь, что вы удалили все старые nodejs.

Шаг 1: удалите nodejs и удалите node_home и npm_home;

Шаг 2: скачать nvm и установить его. Моя ОС win, поэтому ссылка: https://github.com/coreybutler/nvm-windows/releases. если ваша ОС MAC или Linux, вы можете использовать утилиты brew или apt install для установки.

Шаг 3: откройте cmd.exe, запустите его как «администратор», проверив пример NVM_HOME и NVM_SYMLINK:

NVM_HOME=D:devnodenvm
NVM_SYMLINK=D:devnodenodejs

Примечание:убедитесь, что nvm home и символическая ссылка nvm нужны в папке diff.

Если не установлено, вы должны установить вручную и добавить путь:

%NVM_HOME%
%NVM_SYMLINK%

Откройте новый терминал cmd.exe и убедитесь, что все в порядке.

Шаг 4: Откройте новую подсказку терминала:

run 'nvm on'
run 'nvm list'
run 'nvm install 14'
run 'nvm use 14.18.2'
run 'node --version'

введите здесь описание изображения наслаждайся этим.


1

君主不是你
6 Янв 2022 в 11:49

Когда это произойдет:

C:WindowsSystem32>nvm use 16.13.0
exit status 145: The directory is not empty.

Просто убедитесь, что папка nodejs пуста, отметьте C:Program Filesnodejs или C:Program Files (x86)nodejs, в противном случае удалите содержимое. Затем повторите попытку nvm use XXXX (xxxx – это версия)


4

Oscar Albert
13 Фев 2022 в 05:33

В Windows 10 это исправлено после того, как я удалил приложение node.js из панели управления. И установите конкретную версию с помощью nvm install x.x.x, затем nvm используйте x.x.x, используя Powershell в режиме администрирования.


1

Temuujin Dev
16 Авг 2022 в 03:32

Предлагаем вам удалить локальные узлы nodejs из панели управления и повторить попытку, используя nvm *******


0

code101
15 Авг 2022 в 15:49

Так называемые неудаляемые папки и файлы не такая уже редкость для Windows. Основная причина, по которой в системе не удаётся удалить объект заключается в удерживании его каким-нибудь процессом. В таких случаях обычно проблема решается с помощью утилиты-разблокировщика типа Unlocker, но так бывает не всегда. Даже такой, казалось бы, действенный способ как «отключение» объекта от всех процессов может оказаться бесполезным, если сектор, в который он записан, содержит ошибки файловой системы.

Ни переименование, ни использование разблокировщиков и шредеров, ни изменение прав доступа здесь не помогут. Нет даже гарантии, что застрявшую папку или файл вы сможете удалить, загрузившись с LiveCD с Linux, так как другая операционная система при попытке удаления объекта столкнётся с той же ошибкой.

По каким признакам можно судить, что невозможность удаления объекта вызвана именно повреждением файловой системы или диска?

Прямо на это указывает ошибка «Папка не пуста» с кодом 0x80070091.

«Папка не пуста» - код 0x80070091

Косвенно — отсутствие какой-либо реакции на попытки удаления папки или файла (появления окон прии нажатии Dеlеte и т.п.). В некоторых случаях проблемный объект таки удаётся удалить из-под LiveCD, но самое правильное, что нужно предпринять в такой ситуации — это проверить файловую систему встроенной утилитой Chkdsk. Наверняка в процессе проверки на диске (томе) будут обнаружены ошибки файловой системы.

Проверка на наличие ошибок

Запустить проверку можно как через свойства раздела, так и через командную строку (команды chkdsk /f /r).

Chkdsk

Если диск системный, проверка будет выполнена после перезагрузки Windows, для анализа пользовательского раздела перезагрузка не понадобится.

Проверка ошибок

В большинстве случаев после успешной проверки файловой системы и исправления найденных ошибок проблемную папку удаётся удалить стандартными средствами системы.

Если процесс Chkdsk не удается завершить, возможно, диск нуждается в более тщательной проверке профессиональными утилитами типа Victoria.

Загрузка…

Ошибка 0х80070091 возникает в том случае, когда пользователь собирается удалить какую-то папку, а операционная система Windows препятствует этому. С такой ошибкой может столкнуться кто угодно. В основном она возникает при удалении системных папок или файлов с диска С, однако бывают случаи, когда папку невозможно удалить с дисков D или E.

«Ошибка 0х80070091: Папка не пуста» сопровождается длинным системным текстом о том, что возникла непредвиденная ошибка и папка не может быть удалена. Самое интересное, что удаляемая папка может быть абсолютно пустой, даже если включить просмотр скрытых файлов или просмотреть папку при помощи стороннего софта. Данная ошибка происходит на уровне системных файлов, поэтому, прежде чем удалить папку, нужно решить проблему с этой ошибкой. Делается это очень просто, и способ мы опишем чуть ниже. Помимо основного способа удаления папки с ошибкой, можно попробовать альтернативные методы удаления, о которых мы также поговорим.

Как удалить папку, если возникла ошибка 0х80070091

Ошибка 0х80070091 представляет собой системный сбой, от которого не застрахован ни один современный диск: ни HDD, ни SSD. Точные причины возникновения этой ошибки сложно определить, например, это могут быть:

  • перебои в электропитании;

  • неправильное выключение компьютера;

  • прерывание процесса обновления Windows;

  • и др.

В любом случае ошибка 0х80070091 связана с повреждением файловой системы, а это значит, что вылечить ее можно системной утилитой. Для этого нужно:

  1. Определить, на каком диске находится неудаляемая папка, которая приводит к ошибке 0х80070091. Это может быть любой диск: С, D, E.

  2. Открыть «Свойства» диска, на котором расположена папка.

  3. Найти вкладку «Сервис» и нажать «Проверить».

  4. Если Windows обнаружит ошибку, тогда нажимайте кнопку «Закрыть» и выполняйте все дальше по пунктам. Если ошибка не обнаружена, тогда переходите к альтернативным методам.

  5. Если операционная система обнаружила ошибки и вы нажали кнопку «Закрыть», то перед вами откроется еще одно окно, где нужно будет нажать «Восстановить диск».

  6. После успешного восстановления необходимо будет перезагрузить компьютер.

  7. После перезагрузки компьютера можете удалить папку, которая ранее не удалялась и провоцировала ошибку 0х80070091.

Альтернативные методы удаления папки с возникающей ошибкой 0х80070091

Первый вариант с восстановлением диска обычно помогает. Но могут быть случаи, когда после проверки диска Windows не обнаружила ошибки на диске, и восстановить его не получится. В этом случае можно попробовать один из альтернативных способов удаления папки в обход ошибки 0х80070091. Например:

  1. Попробуйте переименовать папку, которая не удаляется, а потом попробуйте удалить ее еще раз.

  2. Необходимо включить отображение скрытых файлов. Возможно, ваша папка действительно не пустая, и в ней находятся данные, препятствующие ее удалению. В этом случае удалите файлы, а потом удалите и папку.

  3. Используйте программу-менеджер файлов для удаления выбранной папки.

  4. Может получиться удалить «проблемную» папку, если загрузиться в Безопасном режиме с загрузочного диска или по удаленному доступу с другого компьютера.

Заключение

Ошибка «0х8007009: Папка не пуста» частый «гость» операционной системы Windows. Какой-либо из перечисленных способов обязательно поможет удалить «проблемную» папку. Если представить, что ничего из перечисленного не помогло, значит, у вас вовсе не ошибка 0х80070091.

Вы получаете ошибку 0x80070091 папка не пуста? Это происходит, когда вы пытаетесь удалить папку с внешнего жесткого диска, флешки или SD-карты, но это также может произойти при удалении файла с системного диска. Прежде чем приступить к исправлению данной проблемы, советую вам попробовать переименовать папку или перезагрузить компьютер. Если ничего не получается, то разберем пару способов для устранения данной ошибки, которая звучит следующим образом:

«Не удалось удалить папку из-за непредвиденной ошибки. При повторном появлении этого сообщения об ошибке выполните поиск по коду ошибки для получения справки по этой проблеме. Ошибка 0x80070091: Папка не пуста«.

Ошибка 0x80070091 Каталог не пуст

 1. Запуск проверки и исправления диска

Проверим плохие сектора на жестком диске, которые могут выдавать данные ошибки.

  • Наберите в «поиск windows» cmd или командная строка, затем нажмите правой кнопкой мыши и выберите запустить от имени администратора.
  • В командную строку введите следующую команду chkdsk /f /r E: Где буква E — это имя диска, флешки на котором ошибка, измените его на ваше.
  • Если выскочит «невозможно выполнить команду…», то нажмите на клавиатуре Y.

Примечание: Компьютер может сказать, что операция будет выполнена при следующей загрузке, тогда перезагрузите компьютер и дождитесь окончания процесса.

Запуск проверки диска на поврежденные сектора

channel

2. Перезапустите проводник Windows

Время от времени подпроцессы привязываются в проводник и перезапуск проводника может исправить эту ошибку.

  • Откройте диспетчер задач windows нажав комбинацию кнопок CTRL + SHIFT + ESC или CTRL + ALT + DEL.
  • На вкладке «процессы» найдите процесс под именем «Проводник«.
  • Нажмите на него один раз и снизу будет кнопка «Перезапустить» и проверьте решена ли ошибка.

Перезапуск проводника windows

3. Сканирование компьютера антивирусом

Программы бывают виновниками разных ошибок, если вы недавно установили программу и заметили после ее установки данную ошибку, то удалите ее, чтобы проверить решиться ли данная проблема. Также рекомендую проверить всю систему windows хорошим антивирусным сканером или антивирусом.


Смотрите еще:

  • Ошибка 0x8000ffff при восстановлении системы Windows 10
  • Ошибка DistributedCOM Код события 10016 Windows 10
  • Не найден сетевой путь ошибка 0x80070035
  • Ошибка 0x80070643: Не удалось установить обновления Windows 10
  • Ошибка 0x80242006 обновления в Windows 10 

[ Telegram | Поддержать ]

Я получаю ошибку «доступ запрещен», когда я пытаюсь удалить папку, которая не пуста. Я использовал следующую команду в своей попытке:os.remove("/folder_name").

каков наиболее эффективный способ удаления / удаления папки / каталога, который не является пустым?

15 ответов


import shutil

shutil.rmtree('/folder_name')

стандартная ссылка на библиотеку: shutil.rmtree.

конструкция rmtree не на деревьях папок, содержащих файлы только для чтения. Если вы хотите удалить папку независимо от того, содержит ли она файлы только для чтения, используйте

shutil.rmtree('/folder_name', ignore_errors=True)

С документы python on os.walk():

# Delete everything reachable from the directory named in 'top',
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))

import shutil
shutil.rmtree(dest, ignore_errors=True)

из Python 3.4 вы можете использовать :

import pathlib

def delete_folder(pth) :
    for sub in pth.iterdir() :
        if sub.is_dir() :
            delete_folder(sub)
        else :
            sub.unlink()
    pth.rmdir() # if you just want to delete dir content, remove this line

здесь pth это pathlib.Path экземпляра. Хорошо, но не самый быстрый.


import os
import stat
import shutil

def errorRemoveReadonly(func, path, exc):
    excvalue = exc[1]
    if func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
        # change the file to be readable,writable,executable: 0777
        os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)  
        # retry
        func(path)
    else:
        # raiseenter code here

shutil.rmtree(path, ignore_errors=False, onerror=errorRemoveReadonly) 

Если ignore_errors установлен, ошибки игнорируются; в противном случае, если onerror установлен, он вызывается для обработки ошибки с аргументами (func, path, exc_info), где func-os.listdir, os.удалить, или ОС.rmdir; path-это аргумент этой функции, который вызвал ее сбой; и exc_info-это кортеж, возвращаемый sys.exc_info(). Если ignore_errors имеет значение false, а onerror-None, возникает исключение.введите код здесь


Если вы уверены, что хотите удалить все дерево dir, и больше не заинтересованы в содержимом dir, то ползать по всему дереву dir-глупость… просто вызовите команду native OS из python, чтобы сделать это. Это будет быстрее, эффективнее и потребляет меньше памяти.

RMDIR c:blah /s /q 

или * nix

rm -rf /home/whatever 

в python код будет выглядеть так..

import sys
import os

mswindows = (sys.platform == "win32")

def getstatusoutput(cmd):
    """Return (status, output) of executing cmd in a shell."""
    if not mswindows:
        return commands.getstatusoutput(cmd)
    pipe = os.popen(cmd + ' 2>&1', 'r')
    text = pipe.read()
    sts = pipe.close()
    if sts is None: sts = 0
    if text[-1:] == 'n': text = text[:-1]
    return sts, text


def deleteDir(path):
    """deletes the path entirely"""
    if mswindows: 
        cmd = "RMDIR "+ path +" /s /q"
    else:
        cmd = "rm -rf "+path
    result = getstatusoutput(cmd)
    if(result[0]!=0):
        raise RuntimeError(result[1])

база на ответ kkubasik, проверьте, существует ли папка перед удалением, более надежная

import shutil
def remove_folder(path):
    # check if folder exists
    if os.path.exists(path):
         # remove if exists
         shutil.rmtree(path)
remove_folder("/folder_name")

от docs.python.org:

в этом примере показано, как удалить дерево каталогов в Windows, где
некоторые файлы только для чтения бит. Он использует onerror
обратный вызов, чтобы очистить бит readonly и повторно подключить remove. Любой
последующий сбой будет распространяться.

import os, stat
import shutil

def remove_readonly(func, path, _):
    "Clear the readonly bit and reattempt the removal"
    os.chmod(path, stat.S_IWRITE)
    func(path)

shutil.rmtree(directory, onerror=remove_readonly)

Если вы не хотите использовать


просто некоторые параметры python 3.5 для завершения ответов выше. (Я бы с удовольствием нашел их здесь).

import os
import shutil
from send2trash import send2trash # (shutil delete permanently)

удалить папку, если пустой

root = r"C:UsersMeDesktoptest"   
for dir, subdirs, files in os.walk(root):   
    if subdirs == [] and files == []:
           send2trash(dir)
           print(dir, ": folder removed")

удалить папку если она содержит этот файл

    elif subdirs == [] and len(files) == 1: # if contains no sub folder and only 1 file 
        if files[0]== "desktop.ini" or:  
            send2trash(dir)
            print(dir, ": folder removed")
        else:
            print(dir)

удалить папку, если она содержит только .srt or .txt файл(ы)

    elif subdirs == []: #if dir doesn’t contains subdirectory
        ext = (".srt", ".txt")
        contains_other_ext=0
        for file in files:
            if not file.endswith(ext):  
                contains_other_ext=True
        if contains_other_ext== 0:
                send2trash(dir)
                print(dir, ": dir deleted")

удалить папку, если ее размер меньше 400 КБ:

def get_tree_size(path):
    """Return total size of files in given path and subdirs."""
    total = 0
    for entry in os.scandir(path):
        if entry.is_dir(follow_symlinks=False):
            total += get_tree_size(entry.path)
        else:
            total += entry.stat(follow_symlinks=False).st_size
    return total


for dir, subdirs, files in os.walk(root):   
    If get_tree_size(dir) < 400000:  # ≈ 400kb
        send2trash(dir)
    print(dir, "dir deleted")

вы можете использовать ОС.системная команда для простоты:

import os
os.system("rm -rf dirname")

как очевидно, он фактически вызывает системный терминал для выполнения этой задачи.


удалить папку, даже если она может не существовать (избегая условия гонки в ответ Чарльза Чоу), но все еще есть ошибки, когда другие вещи идут не так (например, проблемы с разрешением, ошибка чтения диска, файл не является каталогом)

Для Python 3.x:

import shutil

def ignore_absent_file(func, path, exc_inf):
    except_instance = exc_inf[1]
    if isinstance(except_instance, FileNotFoundError):
        return
    raise except_instance

shutil.rmtree(dir_to_delete, onerror=ignore_absent_file)

код Python 2.7 почти такой же:

import shutil
import errno

def ignore_absent_file(func, path, exc_inf):
    except_instance = exc_inf[1]
    if isinstance(except_instance, OSError) and 
        except_instance.errno == errno.ENOENT:
        return
    raise except_instance

shutil.rmtree(dir_to_delete, onerror=ignore_absent_file)

def deleteDir(dirPath):
    deleteFiles = []
    deleteDirs = []
    for root, dirs, files in os.walk(dirPath):
        for f in files:
            deleteFiles.append(os.path.join(root, f))
        for d in dirs:
            deleteDirs.append(os.path.join(root, d))
    for f in deleteFiles:
        os.remove(f)
    for d in deleteDirs:
        os.rmdir(d)
    os.rmdir(dirPath)

Я нашел очень простой способ, чтобы удалить все папка (даже не пустая) или файла о ОС WINDOWS.

os.system('powershell.exe  rmdir -r D:workspaceBranches*%s* -Force' %CANDIDATE_BRANCH)

С ОС.walk я бы предложил решение, которое состоит из 3 однострочных вызовов Python:

python -c "import sys; import os; [os.chmod(os.path.join(rs,d), 0o777) for rs,ds,fs in os.walk(_path_) for d in ds]"
python -c "import sys; import os; [os.chmod(os.path.join(rs,f), 0o777) for rs,ds,fs in os.walk(_path_) for f in fs]"
python -c "import os; import shutil; shutil.rmtree(_path_, ignore_errors=False)"

первый скрипт chmod все подкаталоги, второй скрипт chmod все файлы. Затем третий сценарий удаляет все без каких-либо препятствий.

я протестировал это из «сценария оболочки» в задании Дженкинса (я не хотел хранить новый скрипт Python в SCM, поэтому искал однострочное решение), и он работал для Linux и Windows.

1

автор: Alexander Samoylov


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка 1441 мицубиси паджеро
  • Ошибка 144 омега б