OPENFILES — команда CMD для управления файлами, открытыми через сетевой общий доступ. Позволяет просмотреть список всех открытых по сети файлов, выяснить, какой пользователь держит блокировку, и принудительно отключить его — без перезагрузки сервера.
- Синтаксис команды OPENFILES
- Ключи и параметры
- Примеры использования
- Просмотр всех открытых по сети файлов
- Экспорт списка в CSV для анализа
- Найти, кто блокирует конкретный файл
- Закрыть файл по ID
- Отключить всех пользователей от их файлов
- Просмотр открытых файлов на удалённом сервере
- Включить отслеживание локально открытых файлов
- Частые ошибки и решения
- Когда применять, а когда нет
- FAQ
- Чем OPENFILES отличается от команды NET FILE?
- Как найти все файлы, заблокированные конкретным пользователем?
- Будет ли потеряна несохранённая работа при принудительном закрытии файла?
- Почему OPENFILES не видит локальные файлы?
- Есть ли аналог OPENFILES в PowerShell?
- Можно ли закрыть файл на удалённом компьютере не зная пароля администратора?
Синтаксис команды 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 нужны права администратора на этом компьютере. Без соответствующих прав команда вернёт ошибку доступа.


