OPENFILES — просмотр и закрытие открытых файлов в сети из CMD

OPENFILES — команда CMD для просмотра файлов, открытых по сети или локально, и принудительного закрытия блокировок. Требует прав администратора и включения аудита объектов.

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

Синтаксис команды OPENFILES

OPENFILES /параметр [опции]

Команда работает в трёх режимах:

  • /Query — вывод списка открытых файлов.
  • /Disconnect — закрытие открытых файлов и отключение сеансов.
  • /Local — управление флагом ведения локального журнала открытых файлов.

Ключи и параметры

Ключ Описание Пример
/Query Показать все открытые по сети файлы (на локальном или удалённом компьютере) openfiles /query
/Query /s \\имя Список открытых файлов на удалённом компьютере openfiles /query /s \\SERVER01
/Query /fo TABLE Формат вывода: TABLE (таблица), LIST (список), CSV openfiles /query /fo CSV
/Query /v Расширенный вывод с именем пользователя и режимом доступа openfiles /query /v
/Disconnect /id N Закрыть файл по его ID (из столбца ID в /Query) openfiles /disconnect /id 45
/Disconnect /a пользователь Закрыть все файлы, открытые указанным пользователем openfiles /disconnect /a ivanov
/Disconnect /o имя_файла Закрыть конкретный файл по его имени (можно использовать * для маски) openfiles /disconnect /o "report.docx"
/Disconnect /s \\имя Закрыть файлы на удалённом компьютере openfiles /disconnect /s \\SERVER01 /id 45
/Local ON Включить ведение журнала локально открытых файлов (требует перезагрузки) openfiles /local on
/Local OFF Отключить ведение журнала локально открытых файлов openfiles /local off
/s /u /p Подключение к удалённому компьютеру с учётными данными openfiles /query /s \\SRV /u domain\admin /p пароль

Примеры использования

Просмотр всех открытых по сети файлов

Базовый запрос — узнать, какие файлы сейчас открыты через общие папки.

openfiles /query /fo TABLE /v

Вывод содержит ID сеанса, имя пользователя, имя компьютера, режим доступа и путь к файлу. Флаг /v показывает расширенную информацию, /fo TABLE — читаемый табличный формат.

Экспорт списка в CSV для анализа

Если открытых файлов много — удобнее экспортировать в CSV и открыть в Excel.

openfiles /query /fo CSV /v > openfiles_report.csv

Файл openfiles_report.csv создаётся в текущем рабочем каталоге. Первая строка — заголовки столбцов.

Найти, кто блокирует конкретный файл

Файл не удаляется и не открывается — нужно выяснить, кто его держит.

openfiles /query /fo TABLE /v | findstr "report.docx"

В строке результата будет имя пользователя и ID сеанса. Используйте этот ID для закрытия файла.

Закрыть файл по ID

После получения ID из /query принудительно закройте блокировку.

openfiles /disconnect /id 45

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

Отключить всех пользователей от их файлов

Нужно перед обслуживанием сервера — закрыть все сетевые сеансы разом.

openfiles /disconnect /a *

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

Просмотр открытых файлов на удалённом сервере

Администрирование файлового сервера с рабочей станции без RDP-подключения.

openfiles /query /s \\FILESERVER01 /u domain\admin /fo TABLE /v

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

Включить отслеживание локально открытых файлов

По умолчанию OPENFILES показывает только сетевые файлы. Для включения отслеживания локальных файлов используется режим Local.

openfiles /local on

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

Частые ошибки и решения

Ошибка / симптом Причина Решение
«Отказано в доступе» при выполнении любой подкоманды CMD запущена без прав администратора Запустите командную строку от имени администратора
«Список открытых файлов пуст» при наличии активных пользователей Команда показывает только файлы, открытые через сетевой общий доступ (SMB); локальные файлы без включённого режима Local не отображаются Убедитесь, что пользователи обращаются именно через сетевой путь (\\server\share), а не через локальный
После /disconnect файл всё ещё заблокирован Приложение на клиенте восстановило соединение и снова открыло файл Попросите пользователя закрыть приложение перед принудительным отключением
Ошибка при подключении к удалённому компьютеру Служба «Сервер» не запущена на удалённом компьютере или порт 445 закрыт Проверьте, запущена ли служба Server (net start server), и разрешите SMB в брандмауэре
Команда /local on не работает без перезагрузки Изменение режима Local вступает в силу только после перезагрузки ОС Перезагрузите компьютер после выполнения команды

Когда применять, а когда нет

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

Ограничения: команда работает только с файлами, открытыми через SMB-общий доступ; WebDAV и другие протоколы не поддерживаются. Для отображения локально открытых файлов нужно заранее включить режим /local on и перезагрузить систему. В PowerShell аналогичную функцию выполняют командлеты модуля SmbShare: Get-SmbOpenFile и Close-SmbOpenFile — они удобнее для скриптинга и поддерживают конвейер.

FAQ

Чем OPENFILES отличается от команды NET FILE?

NET FILE также показывает открытые по сети файлы и позволяет их закрывать (net file ID /close). OPENFILES предоставляет более детальный вывод, поддерживает форматы CSV/TABLE/LIST, работу с удалёнными компьютерами и фильтрацию по пользователю. Для простых операций подойдёт любая из команд.

Как найти все файлы, заблокированные конкретным пользователем?

Используйте: openfiles /query /fo TABLE /v | findstr "имя_пользователя". Все строки с этим пользователем содержат ID файлов, которые можно закрыть командой /disconnect /a имя_пользователя.

Будет ли потеряна несохранённая работа при принудительном закрытии файла?

Да. При выполнении openfiles /disconnect соединение разрывается немедленно, несохранённые изменения теряются. По возможности предупредите пользователя и дайте ему время сохранить данные.

Почему OPENFILES не видит локальные файлы?

По умолчанию OPENFILES отображает только сетевые файлы. Для отслеживания локально открытых файлов выполните openfiles /local on и перезагрузите систему. Учтите, что это слегка увеличивает нагрузку на ОС.

Есть ли аналог OPENFILES в PowerShell?

Да: Get-SmbOpenFile возвращает список открытых файлов по SMB, Close-SmbOpenFile -FileId ID -Force принудительно закрывает файл. PowerShell-командлеты удобнее при автоматизации и работают в рамках конвейера.

Можно ли закрыть файл на удалённом компьютере не зная пароля администратора?

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

Оцените статью
( Пока оценок нет )
MW10
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.