Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Закрыть дескрипторы только на определенный каталог, но не файлы внутри

Ответить
Настройки темы
CMD/BAT - [решено] Закрыть дескрипторы только на определенный каталог, но не файлы внутри

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: MAGNIFICO
Дата: 02-02-2021
Доброго времени суток. Впервые обращаюсь, прошу помощи
Есть очень старая программа где происходит утечка дескрипторов, в handle отображает тысячу раз открытый каталог, и в течении 2х недель прога вылетает. Хочу автоматизировать процесс закрытия хендлов, конкретно на каталог.
в командной строке, свою программу, для примера, я обозвал explorer, и в папке MainDir есть рабочие файлы и каталоги. Задача закрыть хендлы только на директорию MainDir, но не дальше. Т.е. исключить файлы и поддиректории.
Код: Выделить весь код
for /F "tokens=3,6 delims=: " %I IN ('handle.exe -p explorer -accepteula "C:\Documents and Settings\Admin\Desktop\MainDir"') DO handle.exe -c %J -y -p %I
Код выше закрывает все дескрипторы которые принадлежат explorer, и где в поиске встречается "C:\Documents and Settings\Admin\Desktop\MainDir".
Как сделать, чтобы всё, что после MainDir не попадало в список FOR IN в handle ?
Заранее спасибо!

Отправлено: 22:02, 02-02-2021

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


MAGNIFICO, Вы полагаете, если закрывать хэндлы «ручками» — она не «вылетит»?

Отправлено: 23:35, 02-02-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, нет, прога работает с файлами. Некоторые залочены, их то и нельзя закрывать. А только корневой каталог, я нашёл причину по которой хендлы растут, это импорт файлов. Точнее пока файл копируется, прога ожидает завершения копирования файла, и в это время дескрипторы увеличиваются, и после не закрываются, когда делаю handle -p mainProgram то у меня в основном только отображается этот каталог. Если решения не найду, буду думать через промежуточный текстовый файл: вывод в список, потом удаление строк, а после закрытие хендлов, но как это сделать пока не знаю. Курю маны)))

Отправлено: 00:16, 03-02-2021 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6530
Благодарности: 1483

Профиль | Отправить PM | Цитировать


Handles отображаются и в powershell с помощью команды
Код: Выделить весь код
get-process explorer |select *
Я не совсем понимаю задачу и не работал с хэндлами, но, возможно, задачу проще решить пауэршеллом без привлечения доп. программ.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 09:46, 03-02-2021 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем спасибо. Вопрос решен.
Код: Выделить весь код
handle.exe -p explorer -accepteula "C:\Documents and Settings\Admin\Desktop\MainDir" > handle.txt
sed.exe "/MainDir\\/d" handle.txt > hresult.txt
for /F "tokens=3,6 delims=: " %%I IN (hresult.txt) DO handle.exe -c %%J -y -p %%I

Отправлено: 13:53, 03-02-2021 | #5


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Цитата DJ Mogarych:
get-process explorer | select *
Дескрипторы (handles) и общая сводка по процессу суть полярные вещи. Дескрипторы никак иначе окромя сторонних модулей не получить, раз, в зависимости от версии pwsh, хост может падать, два (так как для "расшифровки" данных запрашивающий процесс должен выполнять дублирование дескриптора).
Цитата MAGNIFICO:
Всем спасибо. Вопрос решен.
Имея на руках sed всё можно уместить в одну команду. Во-вторых, у handle есть дурная склонность "зомбифицировать" некоторые потоки.

Отправлено: 15:27, 03-02-2021 | #6


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


greg zakharov, под линуксом да, там удобнее). А тут XP - я не сильно заморачиваюсь. В общем одни костыли на работе)) само копирует, само конвертирует, сортирует, перекладывает))

Отправлено: 16:29, 03-02-2021 | #7


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


MAGNIFICO,
если все правильно. уберите вывод в файл и команду echo в выводе for
Код: Выделить весь код
@echo off
for /f "tokens=1,4* delims=: " %%a in ('handle -p "explorer.exe"^|sed -n "/C:\\Documents and Settings\\Admin\\Desktop\\MainDir\\[^\]/p"') do echo handle.exe -c %%a -y -p %%b:%%c >> handle.txt
pause

Отправлено: 17:38, 03-02-2021 | #8


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


alpap, там и цикл не нужен: вывод sed просто передать далее по конвейеру cmd /c + "команда".
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:42, 03-02-2021 | #9


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
вывод sed просто передать »
может быть, не пробовал, но скорее всего надо фильтровать под утилиту под ключи: -c и -p, колонок там немало и пути с пробелами не отделены.

Отправлено: 18:19, 03-02-2021 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Закрыть дескрипторы только на определенный каталог, но не файлы внутри

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Системник включается, но нет картинки на мониторе и не только Екатерина_Оленева@vk Непонятные проблемы с Железом 26 28-08-2015 12:09
VBS/WSH/JS - [решено] Надо скопировать файлы из одной папки в другую, но только если их нет в третьей rromms Скриптовые языки администрирования Windows 3 11-09-2011 21:42
V. 5.5/2000/2003 - Exchange работает, но почта ходит только внутри домена. Oleg_kim Microsoft Exchange Server 8 02-10-2009 15:02
CMD/BAT - файлы вида mmdd*.* - для каждой даты нужно создать каталог, скопировать, файлы milito Скриптовые языки администрирования Windows 2 24-05-2009 23:32
Как закрыть определенный порт на PC, используя Active directory? saitser Microsoft Windows NT/2000/2003 10 12-03-2009 21:47




 
Переход