Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574

WinApi принудительно освободить файл

23.01.2020, 20:17. Показов 5337. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер. Подскажите, как можно средствами winApi(ну или bat/vbs/js) освободить занятый файл.
Можно либо сам файл принудительно освободить, либо хотя бы узнать открытый хэндл, что бы потом его принудительно закрыть.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2020, 20:17
Ответы с готовыми решениями:

Принудительно освободить память MS SQL Server 2000 SP4
Здравствуйте! Подскажите пожалуйста, есть ли способы принудительно освободить занятую сервером оперативную память в результате...

Как принудительно сохранить файл, без выскакивания окошка ' Файл 1.xls уже существует, заменить?'
Как принудительно сохранить файл, без выскакивания окошка ' Файл 1.xls уже существует, заменить?'

Как освободить старые ImageVew чтобы освободить память
Привет всем Я новичок поэтому прошу сильно не пинать. В общем мое первое приложение типа интернет магазин. Одно окно в котором...

17
6996 / 2881 / 1109
Регистрация: 06.06.2017
Сообщений: 9,777
23.01.2020, 21:08
Никто вам тут полноценный код писать не будет (тем более на скриптовых языках). Пользуйтесь тем, что есть: Unlocker, IObit Unlocker.
1
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
23.01.2020, 23:17
Цитата Сообщение от FlasherX Посмотреть сообщение
тем, что есть: ..., IObit Unlocker
самое оно, удобнее всего
0
6996 / 2881 / 1109
Регистрация: 06.06.2017
Сообщений: 9,777
23.01.2020, 23:32
Цитата Сообщение от alpap Посмотреть сообщение
удобнее всего
В меню и первый вариант прикручивается.
Вопрос ещё в том, для чего освобождать файлы нужно. Если для копирования, то есть hobocopy.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.01.2020, 05:21
Windows Batch file
1
openfiles /disconnect /op "C:\file.txt" /a *
https://safezone.cc/threads/kak-poluchit-spisok-otkrytyx-fajlov.26237/
0
6996 / 2881 / 1109
Регистрация: 06.06.2017
Сообщений: 9,777
24.01.2020, 06:24
Dragokas, пятая по списку в сравнительной табличке Unlocker'a.

Вы же в курсе п. 5.8 правил?
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.01.2020, 06:56
FlasherX, это не от NirSoft, а встроенная в винду.

Не по теме:

Где-то было правило, что можно публиковать ссылки на статьи, видимо с того времени снова ужесточили правила :(

0
6996 / 2881 / 1109
Регистрация: 06.06.2017
Сообщений: 9,777
24.01.2020, 07:16
Dragokas, а, точно, пардон. Попробовал на паре файлов из Temp, никакой реакции.

В 16 году (может, и раньше) правило уже было.
0
Эксперт WindowsАвтор FAQ
 Аватар для Dragokas
18033 / 7736 / 892
Регистрация: 25.12.2011
Сообщений: 11,502
Записей в блоге: 16
24.01.2020, 08:52
Тоже проверил тестовой утилью. Похоже что-то сломали апдейтами. На обновлённой оси вообще не выводит залоченные, хотя на виртуалке работает.

В таком случае, в помощь утилитки от Руссиновича:
https://docs.microsoft.com/en-... ads/handle
https://docs.microsoft.com/en-... ads/psfile

Не по теме:

Фигня правила, если нельзя ссылаться на свои статьи

0
6996 / 2881 / 1109
Регистрация: 06.06.2017
Сообщений: 9,777
24.01.2020, 09:58
Знаком с утилитами, но они не решают проблему. handle так уже точно. А psfile на ключ -с вообще не реагирует (выдаёт справку), а без оного просит службу сервера...

Гы. А правила раздела — не фигня? Форум есть форум, реклама есть реклама. А статьи вы и здесь прекрасно пишите.
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
24.01.2020, 22:10  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Никто вам тут полноценный код писать не будет
Большое спасибо за радушный прием. Если не знаете ответа, почему просто не подождать, пока ответит знающий человек(Dragokas)?
Зато грубовато высказаться - Вы оказались первым)
Цитата Сообщение от Dragokas Посмотреть сообщение
В таком случае, в помощь утилитки от Руссиновича:
https://docs.microsoft.com/en-... ads/handle
Благодарю за помощь, как раз ночью вот нашел уже эту утилитку, и она со всем справилась=)
Цитата Сообщение от FlasherX Посмотреть сообщение
Знаком с утилитами, но они не решают проблему.
Утилита прекрасно решает проблему освобождения файла одной строчкой кода, как мне и было нужно. Спасибо, что попытались ввести в заблуждение)
0
6996 / 2881 / 1109
Регистрация: 06.06.2017
Сообщений: 9,777
24.01.2020, 22:52
Цитата Сообщение от Averson Посмотреть сообщение
Если не знаете ответа, почему просто не подождать, пока ответит знающий человек(Dragokas)?
Не пишите чуши и посмотрите внимательно на свой запрос. Он никакого отношения к сторонним программам не имеет. А сторонние средства я вам и так предоставил. Человек привёл пример со встроенным средством, и результат с его же слов оказался неудовлетворительным. Не пытайтесь высосать из ситуации то, чего в ней нет.
Цитата Сообщение от Averson Посмотреть сообщение
Вы оказались первым)
Так нужно было действовать на опережение и записать меня в незнайки ещё здесь, тогда бы я не тратил на вас своё время...
Цитата Сообщение от Averson Посмотреть сообщение
Спасибо, что попытались ввести в заблуждение)
Спасибо, что продолжаете нести чушь. Я написал, что тесты с заблокированными файлами ни к чему положительному не приводят. Приведите, как вы считаете, рабочий код, я вам приведу пример с неудовлетворительным тестом на конкретном файле. А после с ним же положительные тесты с приведёнными мной программами.
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
25.01.2020, 00:16  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Человек привёл пример со встроенным средством, и результат с его же слов оказался неудовлетворительным.
Да, только после он дал ту информацию(Handle By Mark Russinovich), которая и оказалась решением моего вопроса, и если бы я этой ночью не наткнулся на нее сам, то именно его ответ помог бы мне.
Цитата Сообщение от FlasherX Посмотреть сообщение
..посмотрите внимательно на свой запрос. Он никакого отношения к сторонним программам не имеет.
Так нужно было действовать на опережение и записать меня в незнайки ещё здесь, тогда бы я не тратил на вас своё время...
За помощь в той теме, я не сказал Вам спасибо? Зачем из себя делать потерпевшего, если это не так? Там Вы были заинтересованы мне помочь, не отвечали грубо, и вопрос мой Вы решили как раз с помощью сторонней утилиты, за что я там и сказал раз 5 спасибо.
Это так странно, будто с Вашего аккаунта пишут два разных человека. То вы доброжелательный гуру-эксперт, то эксперт по посыланию куда подальше.
Цитата Сообщение от FlasherX Посмотреть сообщение
Приведите, как вы считаете, рабочий код
А как же ваше правило "Никто вам здесь рабочий код писать не будет" ?
Но, я здесь хоть и новенький, но имею предположение, что люди сюда и приходят, что бы получить от экспертов рабочий код, и если знают какой-то сами, то поделиться им с другими.

Моими скудными знаниями у меня получилось написать следующий рабочий код (может вы сможете его усовершенствовать, если это требуется):
PowerShell
1
2
$path = "C:\Files\test.txt"
handle -p ((handle $path)[5] | select-string '(?<=pid: )(\d*\w*)').matches.value -c ((handle $path)[5] | select-string '(?<=File\s*)(\d*\w*)(?=:.*)').matches.value -y -nobanner
Вы помогли бы мне это написать, если бы я сам не осили код выше?
Это код смог у меня освободить текстовый файл и видео файл, на которых я его проверил.

Добавлено через 7 минут
Получается можно и сразу удалить файл, если нужно:
PowerShell
1
2
3
$path = "C:\Files\test.txt"
handle -p ((handle $path)[5] | select-string '(?<=pid: )(\d*\w*)').matches.value -c ((handle $path)[5] | select-string '(?<=File\s*)(\d*\w*)(?=:.*)').matches.value -y -nobanner
Remove-Item -Path $path
Добавлено через 27 минут
А для полной автоматизации освобождения файла, можно сделать тихий запуск этого кода из .vbs файла.
0
6996 / 2881 / 1109
Регистрация: 06.06.2017
Сообщений: 9,777
25.01.2020, 06:00
Цитата Сообщение от Averson Посмотреть сообщение
только после он дал ту информацию
А я типа перед в первом же посте не дал? То, что вы её проигнорировали, не далает вам чести. Это ли не прямое доказательство вешания ярлыков?
Цитата Сообщение от Averson Посмотреть сообщение
Зачем из себя делать потерпевшего, если это не так? Там Вы были заинтересованы мне помочь, не отвечали грубо, и вопрос мой Вы решили как раз с помощью сторонней утилиты, за что я там и сказал раз 5 спасибо.
Потерпевший — это громко сказано. А моя заинтересованность ссылками на приведённые утилиты не подтверждена?
То, что вы хотите видеть грубость в констатации факта, как и апеллировать к вымышленным числам, это ваш выбор.
Цитата Сообщение от Averson Посмотреть сообщение
То вы доброжелательный гуру-эксперт, то эксперт по посыланию куда подальше.
А как же ваше правило "Никто вам здесь рабочий код писать не будет" ?
Вы жертву-то из себя не стройте. Вы чётко написали:
Цитата Сообщение от Averson Посмотреть сообщение
Подскажите, как можно средствами winApi(ну или bat/vbs/js) освободить занятый файл.
Вы где-то в ответах видите средства WinAPI или bat/vbs/js? В контексте данного запроса рабочий код без сторонних утилит появился? Нет. А значит, мой тезис о рабочем коде правдив на 100%. И не появится, потому что написать полноценное средство (пусть и без GUI) уровня приведённых мной программ займёт не одну неделю, а то и не один месяц. Вот я и пишу то, что для меня очевидно, но неочевидно для вас. Называть это посыланием куда подальше как минимум невежественно и глупо, как и присовокуплять к кому-то "гуру"-ярлыки...
Цитата Сообщение от Averson Посмотреть сообщение
Вы помогли бы мне это написать, если бы я сам не осили код выше?
Зачем, если я данное средство причислил к ненадёжным?
Цитата Сообщение от Averson Посмотреть сообщение
и видео файл, на которых я его проверил.
Ну, вот запустил я в Gecko-браузере видео с видеохостинга, появился файл %Tmp%\mozilla-temp-files\mozilla-temp-243. Пытаюсь его разблокировать вашим кодом. Результат нулевой, в то время как с обеими программами, что я привёл, положительный.
Цитата Сообщение от Averson Посмотреть сообщение
Получается можно и сразу удалить файл, если нужно:
Так у вас ещё и запрос неполноценный. С утилитой по первой ссылке это делается без всяких powershell'ов и т. п.: Unlocker.exe C:\Files\test.txt -D -S
При желании можно обрабатывать список (/L, /LU). Справка вызывается ключами: -?, /?, -H, /H.
И с ярлыка (а лучше с кнопки в ФМ) будет тихий запуск без нужды в vbs и тормозного старта с posh...
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
25.01.2020, 19:49  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Unlocker.exe C:\Files\test.txt -D -S
Вы бы сразу это написали, тогда бы я Вас сразу правильно понял.
Прошу прощения, я не знал, что анлокером можно пользоваться через команды, в этом все дело. На их сайте всё описание говорит о том, что пользоваться им можно только через интерфейс, кликая мышкой. Только в заголовках сравнительной таблицы обнаружил словa comand line, и тогда уже призадумался. А у handle прямо на верху страницы сразу идет описание запуска командной строкой. Все вот это и запутало меня сначала.
Цитата Сообщение от FlasherX Посмотреть сообщение
глупо, как и присовокуплять к кому-то "гуру"-ярлыки...
Что не нравится Вам в слове "гуру"? Насколько мне известно, это слово означает: человек с большим опытом, сильно осведомленный в какой-то области. Так что это был комплимент, так как помню как Вы помогали мне с моим вопросом.
Цитата Сообщение от FlasherX Посмотреть сообщение
Пытаюсь его разблокировать вашим кодом. Результат нулевой
У меня тоже сначала не получилось. Нужно запустить ps от администратора, и указать путь к папке, где лежит handle.exe.
Поправил код, теперь по идее должен сработать, попробуйте:
PowerShell
1
2
3
4
$filePath = "C:\Files\test.txt"
$handlePath = "C:\Files\handle\"
set-location $handlePath
handle -p ((handle $filePath)[5] | select-string '(?<=pid: )(\d*\w*)').matches.value -c ((handle $filePath)[5] | select-string '(?<=File\s*)(\d*\w*)(?=:.*)').matches.value -y -nobanner
Хочу попробовать сделать как Вы предлагаете(Unlocker.exe C:\Files\test.txt -D -S), но что-то ни одна ссылка на скачивание у них не работает. Возможно это временно...
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
25.01.2020, 20:28
Цитата Сообщение от Averson Посмотреть сообщение
не знал, что анлокером можно пользоваться через команды
Цитата Сообщение от FlasherX Посмотреть сообщение
IObit Unlocker.
этой штукой тоже можно пользоваться из командной строки:
Разблокировать
Windows Batch file
1
start "" "%ProgramFiles%\IObit\IObit Unlocker\IObitUnlocker.exe" /None "file.txt"
Разблокировать и удалить
Windows Batch file
1
start "" "%ProgramFiles%\IObit\IObit Unlocker\IObitUnlocker.exe" /Delete "file.txt"
причем у меня был (и не один) случай когда Unlocker.exe не справился с задачей, а с IObitUnlocker.exe пока не было проблем.
0
㊙️
 Аватар для Fors1k
1316 / 244 / 57
Регистрация: 10.08.2018
Сообщений: 574
25.01.2020, 20:38  [ТС]
alpap, Спасибо за еще один вариант решения.
0
6996 / 2881 / 1109
Регистрация: 06.06.2017
Сообщений: 9,777
25.01.2020, 21:54

Не по теме:

Цитата Сообщение от Averson Посмотреть сообщение
Вы бы сразу это написали, тогда бы я Вас сразу правильно понял.
А просто спросить вместо построения догадок на мой счёт, не?
Цитата Сообщение от Averson Посмотреть сообщение
Прошу прощения
Принимается.
Цитата Сообщение от Averson Посмотреть сообщение
Насколько мне известно, это слово означает
Это фальшивое определение, подмена исходного духовного начала наставничества/мастерства, ко мне как не пришей рукав. ;)


Цитата Сообщение от Averson Посмотреть сообщение
попробуйте:
Аналогично.
Цитата Сообщение от Averson Посмотреть сообщение
Возможно это временно...
Нет, ссылки там не первый год битые. Вот из архива. Есть ещё сборка PortableAppZ.

Цитата Сообщение от alpap Посмотреть сообщение
причем у меня был (и не один) случай когда Unlocker.exe не справился с задачей, а с IObitUnlocker.exe пока не было проблем.
У меня было и так и эдак, поэтому пользуюсь обеими.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2020, 21:54
Помогаю со студенческими работами здесь

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

Oledbconnection не успевает освободить файл
доброго времени суток. создаю файл и заполняю с помощью oledb и потом добавляю в архив. если файл маленький, то архивируется нормально, а...

Освободить файл, занятый в PictureBox
Изображение установлено в pictureBox1.Image Нужно удалить файл с этим изображением. Пробовал перед удалением очищать ...

pictureBox Как освободить файл?
Загружаю файл pictureBox1.Image =Image.FromFile(&quot;0.jpg&quot;); И после этого файл &quot;0.jpg&quot; удалить нельзя пока приложение работает. ...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru