Как получить список открытых файлов?

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
7,809
Реакции
6,574
Привет!

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

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

Единственный и большой минус: потребуется перезагрузка ОС (только 1 раз за всю жизнь ОС).

Подготовка

Итак,
1) запускаем командную строку от имени Администратора.
2) вводим команду:
Код:
openfiles /local on
По-умолчанию, эта утилита, введенная без параметров, отображает только список файлов, открытых по сети.
3) Теперь же перезагружаем систему.

Получение списка

1) запускаем командную строку от имени Администратора.
2) вводим команду:
Код:
openfiles

Теперь полный перечень открытых файлов мы увидим в удобной форме в виде таблицы:

Locked.png


Вы можете перенаправить вывод в файл, чтобы подробнее изучить список в любимом редакторе:
Код:
openfiles > c:\users\alex\desktop\open.txt

Мы увидим Process ID, имя процесса, открывшего файл, сокращенное имя файла.
При желании, можно вывести полное имя файла, а еще и имя пользователя:
Код:
openfiles /Query /V

или изменить представление через ключ /FO "TABLE" (табличное) /FO "LIST" (список), /FO "CSV" (в формате CSV)
Код:
openfiles /Query /V /FO CSV > c:\users\alex\desktop\open3.csv

Фильтрация

Можно отфильтровать список на месте, введя интересующее нас имя файла в фильтр:
Код:
openfiles | find /i "Who-Loked.doc"

или имя (часть имени) программы:
Код:
openfiles | find /i "word"

Filter.png


Разблокировка

Этой же программой Вы можете разблокировать указанный файл:
Код:
openfiles /disconnect /op "C:\Users\Alex\Desktop\Who-Loked.doc" /a *
Или даже все файлы в папке, подставив звездочку:
Код:
openfiles /disconnect /op "C:\Users\Alex\Desktop\*" /a *
Или все файлы, открытые определенным пользователем MyDearFriend (полезно, когда кто-то заблокировал файл, открыв через сеть):
Код:
openfiles /disconnect /op /a "MyDearFriend"

Режим доступа
Мы можем указать, чтобы разблокировать только те файлы, что открыты в режиме ЗАПИСЬ (Write):
Код:
openfiles /disconnect /O Write /op "C:\Users\Alex\Desktop\*" /a *

И конечно же у нас полная свобода работы по сети:
- запрос открытых файлов другого ПК.
- разблокировка файлов другого ПК.

Для этого достаточно добавить ключ /S "Имя системы" и при необходимости /U [<домен>\]<пользователь> /P <пароль>.

Информация актуальна для ОС версий Windows Vista/7/8/8.1/10.
Спасибо за внимание.

Заметка подготовлена по материалам:
Command Line Kung Fu: Episode #180: Open for the Holidays!
 
Этой же программой Вы можете разблокировать указанный файл:
Только у винды, похоже, это по традиции уже сделано криво.
Тестовый вордовский файл закрыть не удалось.
Да и вообще в консоль никакого отчета команда не выдает. Недоделали. Офис то старичек у меня 2003, x32. Защитами не накурочен.
 
Назад
Сверху Снизу