Как удалить папку, которая используется?

135

Иногда, когда я работаю в Windows, я получаю это приглашение при попытке удалить каталог:

Folder In Use
The action can't be completed because the folder is open in another program
Close the folder and try again.

Однако папка вообще не используется, и у меня ее нет. Так как я могу удалить его до перезагрузки?

Фактор Мистик
источник
2
Я нахожу, что это происходит чаще всего при работе с Outlook и MSG-файлами, и в этом случае закрытие Outlook останавливает ошибку «Использование папки». Смотрите также обсуждение этого вопроса сообщества Microsoft .
эфир

Ответы:

82

Этот ответ старый, но, похоже, все еще получает трафик. Как отмечено ниже, в Windows теперь есть встроенный инструмент:

Пуск → Все программы → Стандартные → Системные инструменты → Монитор ресурсов (или Запустите resmon.exe)

Вы можете получить больше информации в ответах ниже этого. Остальная часть этого ответа уже не актуальна.


Process Explorer от Sysinternals позволит вам осуществлять поиск по ручкам и библиотекам DLL. Найдите каталог и выясните, какой процесс «использует» эту папку.

Оттуда у вас есть возможность либо закрыть этот процесс, либо просто закрыть этот конкретный дескриптор файла. Будьте уверены в том, что вы делаете, когда работаете с дескриптором файла напрямую, и убедитесь, что он не используется каким-то важным процессом.

Марк Резид
источник
4
Но как я нахожу каталог, который используется процессом?
Johnny_D
2
Используйте Ctrl-F и введите имя папки выше той, которую вы пытаетесь удалить.
MikeMurko
4
Теперь есть родной графический интерфейс для Windows, см. Мой ответ ниже.
bcorso
3
* Встроенный графический интерфейс / встроенный / Windows (Resource Monitor) см. Ниже.
Джейми Пэйт
В моем случае Process Explorer не смог найти дескриптор, но Resource Monitor (см. Другой ответ) был в состоянии.
Барт Verkoeijen
182

Есть родной графический интерфейс для Windows:

Пуск >> Все программы >> Стандартные >> Системные инструменты >> Монитор ресурсов (или Выполнить resmon.exe )

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


Как пример, на изображении ниже я не могу удалить свой каталог Eclipse. Поиск связанных дескрипторов Eclipse показал, что adb.exe имеет дескриптор каталога. После завершения процесса adb я мог бы удалить каталог Eclipse.

введите описание изображения здесь

bcorso
источник
5
Этот трюк высветил процесс, который доставлял мне горе :)
Pure.Krome
2
Монитор ресурсов требует учетных данных администратора.
Air
У меня на рабочем столе есть заблокированная папка, которую монитор ресурсов не отображает как используемую. Ну что ж.
sirdank
заблокирован? Это должно решить конкретную ошибку в вопросе, то есть «папка открыта в другой программе». Это ваша ситуация?
bcorso
1
Решил проблему для меня.
RubenGeert
8

Unlocker и WhoLockMe не работают на 64-битной Windows. Я использую LockHunter .

Джо
источник
2
Unlocker поставляется для 64-битной системы.
13
lockhunter нашел для меня процесс блокировки, который ProcExp и ResMon не смогли найти.
Умный человек
7

При использовании инструментов, которые принудительно закрывают дескрипторы файлов (например, ранее упомянутый Unlocker ), имейте в виду, что это может вызвать серьезные проблемы. (См. Эту статью Рэймонда Чена .) Убедитесь, что вы знаете, какие приложения используют файл, и что ни одно из них не делает ничего важного.

Безопаснее сначала попытаться закрыть приложения, а не просто принудительно закрывать ручку.

Брант Бобби
источник
Кстати хорошая статья. Важно прочитать.
Pacerier
6

Этот сценарий REG предоставит вам пункт контекстного меню «Просмотр дескрипторов», вызываемый правой кнопкой мыши, который вызовет утилиту дескрипторов Sysinternals, чтобы увидеть все открытые дескрипторы файла или папки, по которым вы щелкнули правой кнопкой мыши.

Поместите файл handle.exe из Sysinternals в папку, доступную по вашему пути.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Handle]
@="View &Handles"

[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\Handle\command]
@="cmd.exe /k handle -a -u \"%1\""
Роберт Кольер
источник
Почему бы просто не использовать версию интерфейса ProcessExplorer?
Pacerier
5

У меня такое было. Иногда я могу решить проблему, удалив сначала содержимое, затем папку (пусто).

kpoehls
источник
Да, у меня это сработало!
TigerTiger
@Wbdvlpr, @ kpoehls, с чего бы это сработало? Я думаю, что это просто миф, и вам повезло.
Pacerier
3

Самый быстрый и простой подход состоит в том, чтобы использовать Handle , как уже упоминалось в slolife, вместо использования Process Explorer. Они оба от Марка Руссиновича @ Microsoft.

Не удивляйтесь, обнаружив, что explorer.exe является виновником, как я сделал сегодня. По-видимому, существует официальный способ перезапустить explorer.exe, но мне кажется, что он убивает его и снова запускает его снова в Диспетчере задач.


источник
2

Когда я работал на XP, я использовал WhoLockMe, чтобы узнать, в каких программах открыты и заблокированы файлы. Самая последняя версия, которую я смог найти, не упоминает Vista, но она того стоит.

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

tghw
источник
2

Если под «не используется» вы имеете в виду отсутствие открытых дескрипторов, убедитесь, что служба Application Experience не отключена . Если это так, установите его вручную:

Run dialog (or command prompt):

  sc config AeLookupSvc start= demand
Synetech
источник
2

Я использую Handle от SysInternals (сейчас Microsoft). Вы можете ввести часть имени папки, чтобы увидеть, какой процесс имеет дескриптор этой папки, а затем убить дескриптор.

handle64.exe -nobanner "<path>"

Например:

вывод команды из командной строки

Как уже упоминалось, убийство ручки может вызвать серьезные проблемы.

slolife
источник
1

У меня была такая же проблема с флэш-памятью (16 ГБ - не имеет значения, вероятно), и это не позволило мне удалить папку. Я перепробовал каждое -freaking- решение, найденное в интернете (скрытие миниатюр, удаление папки из командной строки cmd с выключенным explorer.exe, все ..) и ничего не получалось. Что заставило это работать? Ну, это:

  1. Выберите все файлы в папке
  2. Нажмите на них правой кнопкой мыши и выберите «Cut»
  3. Вернитесь в корневую папку
  4. Вставьте их
  5. Удалить их

Это прекрасно сработало для меня. Надеюсь, я помог. :-)

Marco
источник
1

Чтобы удалить папку / программу, которая говорит, что вы не можете удалить ее, потому что она открыта где-то еще.

  • Нажмите кнопку Пуск
  • Тип Taskmgr
  • В открывшемся новом окне на вкладке процесса найдите папку / программу, которую вы пытаетесь удалить.
  • Щелкните правой кнопкой мыши и завершите задачу
  • Вернитесь в папку / папку программы, и вы сможете удалить ее сейчас
задирать
источник
0

Попробуйте Ctrl+ Shift+ Esc> «Программы», затем щелкните правой кнопкой мыши ту, которую хотите деактивировать, и выберите «Деактивировать». Затем удалите его снова!

(Моя ОС на шведском языке, поэтому переводы могут быть не такими! Но вы это понимаете!)

Johan
источник
0

Часто дескриптор, который заблокирован, является Internet Explorer, я либо закрываю его в диспетчере задач, затем удаляю файл или папку, либо закрываю проводник ... часто в папке есть открытый текстовый файл, который будет дескриптором, который выиграл ' не позволяйте удалять папки / файлы ... просто закройте текстовый файл и тогда все будет хорошо, теперь вы можете удалить вашу папку.

крейсерская
источник
Зачем IE блокировать локальные файлы и почему .txt?
Гроностай
0

Был файл docs.zip в использовании WinSCP.

  1. Я создал новый файл с тем же именем docs.zip
  2. Вставляется поверх существующего файла docs.zip, и старый файл заменяется новым файлом с таким же именем.
  3. Затем я удалил только что скопированный файл docs.zip.

Удачи

Саед Мажар
источник
0

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

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

from shutil import rmtree; rmtree('C:\path\to\folder')

... Бинго Банго.

rubynorails
источник
-1
  1. Найдите файл, который вы хотите удалить.

  2. Переименуйте его во что угодно.

  3. Удалите это.

Janpierre
источник
2
Этот ответ не сработает. Если файл или каталог используется, вы не можете его переименовать.
Дэвид Постилл
-2

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

Самер Сарроух
источник