Что нового

Закрыть процессы, запущенные bat файлом

Norbery

Новичок
Сообщения
4
Репутация
0
Задача: для обновления необходимо перезаписать директорию, из который может быть запущен один или несколько процессов bat файлом. Есть два вопроса:

1 - Как определить и закрыть процессы, запущенные из директории?
2 - Скрипт autoit запускает bat файл через $iPID = Run, но как узнать pid дочерних процессов (имя процессов может быть неизвестно), запускаемых батником?
 

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
Переписать батники в autoit и легко получить все pid-ы
 
Автор
Norbery

Norbery

Новичок
Сообщения
4
Репутация
0
joiner сказал(а):
Переписать батники в autoit и легко получить все pid-ы

К сожалению не выход. Пока использую костыли с записью pid в файл, потом оттуда читаю.

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

Alofa

Гость
Norbery сказал(а):
... как узнать pid дочерних процессов...
Код:
#include <Array.au3>
#include<WinAPIProc.au3> 

Run('BatFile.bat')

$aArray = _WinAPI_EnumChildProcess(@AutoItPID)
_ArrayDisplay($aArray)

Или
Код:
#include <Array.au3>
#include<WinAPIProc.au3> 

$hPID = Run('BatFile.bat')
Sleep(1000) ; Нужно время пока CMD запустит свои процессы, а она это будет делать по мере выполнения файла .bat
$aArray = _WinAPI_EnumChildProcess($hPID)
_ArrayDisplay($aArray)



Добавлено:
Сообщение автоматически объединено:

Norbery сказал(а):
... как можно обнаружить процесс, который лочит файл?
Как отследить не занят ли файл другим процессом
 
Верх