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

Тема в разделе "Пакетные файлы CMD, BAT", создана пользователем Dragokas, 17 сен 2015.

  1. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.497
    Симпатии:
    4.312
    Привет!

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

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

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

    Подготовка

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

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

    1) запускаем командную строку от имени Администратора.
    2) вводим команду:
    Код (Text):
    openfiles
    Теперь полный перечень открытых файлов мы увидим в удобной форме в виде таблицы:

    Locked.png

    Вы можете перенаправить вывод в файл, чтобы подробнее изучить список в любимом редакторе:
    Код (Text):
    openfiles > c:\users\alex\desktop\open.txt
    Мы увидим Process ID, имя процесса, открывшего файл, сокращенное имя файла.
    При желании, можно вывести полное имя файла, а еще и имя пользователя:
    Код (Text):
    openfiles /Query /V
    или изменить представление через ключ /FO "TABLE" (табличное) /FO "LIST" (список), /FO "CSV" (в формате CSV)
    Код (Text):
    openfiles /Query /V /FO CSV > c:\users\alex\desktop\open3.csv
    Фильтрация

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

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

    Этой же программой Вы можете разблокировать указанный файл:
    Код (Text):
    openfiles /disconnect /op "C:\Users\Alex\Desktop\Who-Loked.doc" /a *
    Или даже все файлы в папке, подставив звездочку:
    Код (Text):
    openfiles /disconnect /op "C:\Users\Alex\Desktop\*" /a *
    Или все файлы, открытые определенным пользователем MyDearFriend (полезно, когда кто-то заблокировал файл, открыв через сеть):
    Код (Text):
    openfiles /disconnect /op /a "MyDearFriend"
    Режим доступа
    Мы можем указать, чтобы разблокировать только те файлы, что открыты в режиме ЗАПИСЬ (Write):
    Код (Text):
    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!
     
    tzrb, HardAdmin, E100 и 3 другим нравится это.
  2. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.497
    Симпатии:
    4.312
    Только у винды, похоже, это по традиции уже сделано криво.
    Тестовый вордовский файл закрыть не удалось.
    Да и вообще в консоль никакого отчета команда не выдает. Недоделали. Офис то старичек у меня 2003, x32. Защитами не накурочен.
     
    tzrb, E100 и Phoenix нравится это.
  3. Гимаев Наиль
    Оффлайн

    Гимаев Наиль Пользователь

    Сообщения:
    59
    Симпатии:
    98
    Спасибо, про openfiles не знал. До этого держал под рукой handles и psfile.
     
    tzrb, E100 и HardAdmin нравится это.

Поделиться этой страницей