Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 222
1

Запрет запуска копии процесса

19.05.2018, 17:13. Показов 3224. Ответов 18
Метки нет (Все метки)

Добрый день....

Добавлено через 10 минут
Добрый день....
Есть такой вот код:

Windows Batch file
1
2
3
4
set "osn_p=C:\Program Files\1\Proga_1.exe"
set "osn_p1=Proga_1.exe"
set "osn_p2=Proga_222.exe"
cmd/c for /l %%i in () do @tasklist /fi "imagename eq %osn_p2%"^|findstr/v :^|^| (taskkill /f /im "%osn_p1%"^& start "" "%osn_p%")^&^>nul ping -n 21 127.0.0.1
Суть в том, что программа Proga_1.exe запускает Proga_222.exe и иногда Proga_1.exe просто выключалась и тогда неработало подприложение естств. Proga_222.exe .
ПОэтому я написал, с горем пополоам вот такой код - выше.

НО столкнулся еще с одной проблеммой. Иногда, когда я ставлю комп на сон а потом включаю то авто запуск запускает вторую копию Proga_1.exe и соотв... Proga_222.exe

Вопрос такой. Что написать или как отредактировать ??? - посредством CMD , что бы программа : Proga_1.exe не загружалась второй копией. Спасибо Огромное за помощь, на которую несомненно надеюсь. )

Добавлено через 1 час 5 минут
Неужели никто не вкурсе, как убить дубль проц, когда вылазит??? ... (((
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2018, 17:13
Ответы с готовыми решениями:

Запрет запуска более одной копии файла
Здравствуйте, нужно сделать так, чтобы BAT файл проверял был ли он запущен ранее или нет и завершал...

Организация процесса поиска и сравнения оригинального файла и его резервной копии
Кто шарит помогите запилить код к этому заданию (Пакетный файл, предназначенный для организации...

*.BAT лог запуска процесса
Может кто помочь с батником. Необходимо чтобы батник записывал время startup/shutdown процесса в...

Завершение процесса без запуска окна командной строки
Нужен батник который бы автоматически киллял процесс без запуска самого батника(чтобы он быстро...

18
3857 / 1946 / 621
Регистрация: 26.04.2015
Сообщений: 6,341
19.05.2018, 17:44 2
уберите ее из автозапуска или конкретного автозапуска (папки или реестра) или уберите сон вообще. Здесь же не дубле разговор, не то чтобы их две запускались, а стандартный запуск после пропадания процесса или повторный по условию (автозапуск).
0
Любознательный
1766 / 787 / 217
Регистрация: 10.03.2016
Сообщений: 1,845
19.05.2018, 17:45 3
Цитата Сообщение от sam6780 Посмотреть сообщение
Неужели никто не вкурсе, как убить дубль проц, когда вылазит??? ... (((
Вы очень нетерпеливы... никто ведь не сидит 7/24 на форуме, в ожидании вопросов...

А вопрос Ваш решается не убитием процесса, а проверкой на уже запущенный и далее ветвление.
типа:
Windows Batch file
1
tasklist /NH|>nul findstr /c:"Proga_1.exe"||start "" "Proga_1.exe"
0
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 222
19.05.2018, 19:01  [ТС] 4
Цитата Сообщение от alpap Посмотреть сообщение
уберите ее из автозапуска или конкретного автозапуска (папки или реестра) или уберите сон вообще. Здесь же не дубле разговор, не то чтобы их две запускались, а стандартный запуск после пропадания процесса или повторный по условию (автозапуск).
Соорки, ) но в авто запуске она нужна. просто , что бы когда комп время от времени в сон уходил а - просыпается с целой кучей окон...
По этому и написал )
Попробую рекомендацию YuS_2, Только интересует или этот код впихивать к своему коду? ... или просто строчку вставить ниже?... ...
Вы очень нетерпеливы... никто ведь не сидит 7/24 на форуме, в ожидании вопросов...
Поспешил - Извените )
0
Любознательный
1766 / 787 / 217
Регистрация: 10.03.2016
Сообщений: 1,845
19.05.2018, 19:08 5
Цитата Сообщение от sam6780 Посмотреть сообщение
Только интересует или этот код впихивать к своему коду? ... или просто строчку вставить ниже?... ...
Да как больше нравится... если просто добавить строку, то можно так:
Windows Batch file
1
tasklist /NH|>nul findstr /c:"Proga_1.exe"&&exit
- добавить в начало сценария и при наличии уже запущенного процесса, сценарий будет просто завершать работу.
1
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 222
19.05.2018, 20:04  [ТС] 6
YuS_2, Спасибо большое , все идеально работает за ислючением того, что когда вылазет новое окно то в Taskmanagere вылазят окна программы - cmd ((( они нагромаждаются просто по истечению какого то времени. получается не совсем так как хотелось бы к сожалению... Ну а так впоряде - работает...

Сейчас код приобрел вид:

Windows Batch file
1
2
3
4
5
set "osn_p=C:\Program Files\1\Proga_1.exe"
set "osn_p1=Proga_1.exe"
set "osn_p2=Proga_222.exe"
cmd/c for /l %%i in () do @tasklist /fi "imagename eq %osn_p2%"^|findstr/v :^|^| (taskkill /f /im "%osn_p1%"^& start "" "%osn_p%")^&^>nul ping -n 21 127.0.0.1
tasklist /NH|>nul findstr /c:"Proga_1.exe"&&exit
Но вот эти CMD это тоже своеобразная катастрофа (
0
Любознательный
1766 / 787 / 217
Регистрация: 10.03.2016
Сообщений: 1,845
19.05.2018, 20:17 7
Ещё разок:
Цитата Сообщение от YuS_2 Посмотреть сообщение
добавить в начало сценария
0
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 222
19.05.2018, 22:00  [ТС] 8
Пробовал по всякому, ничего не выходит (
Но спасибо . CMD отсаются, т.к. имеют одинаковые названия то я не знаю стоит ли удалять бат файлом. Может кпримеру у меня в тот момент окно CMD какой то другой программы будет загружаться а получаестя что если подумать , что бы лишние окна удалялооставляя тока два кпримеру то будет хаос и неизвестно, что удалять (((
Я слышал про такую штуку как PID окон CMD. Стоит ли почитать даст ли это желаемый результат ... ?
0
2570 / 1850 / 402
Регистрация: 11.09.2009
Сообщений: 6,872
20.05.2018, 03:18 9
Цитата Сообщение от sam6780 Посмотреть сообщение
Стоит ли почитать...
Почитать всегда стоит.

Цитата Сообщение от sam6780 Посмотреть сообщение
запускает вторую копию Proga_1.exe и ...
Есть много способов защиты от повторного запуска приложения (если такое требуется, конечно). Один из наиболее надёжных - создать при запуске программы какой-нибудь системный атомарный объект (да, они до сих пор в Windows есть) с уникальным идентификатором, при выходе - удалять. А перед запуском - проверять его наличие в системе. Если объект существует, значит экземпляр вашей программы уже запущен. Тут вариантов два: закрыть, или передать управление уже запущенной копии. Смотря что по смыслу правильнее.
0
Любознательный
1766 / 787 / 217
Регистрация: 10.03.2016
Сообщений: 1,845
20.05.2018, 07:32 10
Цитата Сообщение от sam6780 Посмотреть сообщение
слышал про такую штуку как PID окон CMD.
Windows Batch file
1
2
3
4
for /f "tokens=2 delims==" %%a in (
'"WMIC PROCESS Where (Name="cmd.exe" AND CommandLine LIKE "%%%RANDOM%%RANDOM%%%") Get ParentProcessId /Value"'
) do set PID=%%a
echo %PID%
0
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 222
21.05.2018, 15:27  [ТС] 11
YuS_2, понял. Спасибо!. Но я затупил конкретно, как баран )
... мне нужно было говорить не про окна cmd , - они вылазят из за того, что включается копия программы " Proga_222.exe ".
А теперь просто если она не будет включатся ,как вторая копия то и не будет самих копий окон cmd.
Явчера мучился сам , как сделать , что бы не запускслась копия но нифига не вышло. (((
Был бы оч.признаетелен за помощь дотанцевать доконца эту песню. Очень нужно как бы уже. И нету времени на изучение. ((( ...Спасибо большущее...
0
2570 / 1850 / 402
Регистрация: 11.09.2009
Сообщений: 6,872
21.05.2018, 15:51 12
Цитата Сообщение от sam6780 Посмотреть сообщение
включается копия программы " Proga_222.exe ".
... как сделать , что бы не запускслась копия
Может, как-то так?
Windows Batch file
1
2
3
@echo off
tasklist | find /i "Proga_222.exe">nul
if %errorlevel%==1 Proga_222.exe
0
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 222
22.05.2018, 03:05  [ТС] 13
i8085, спасибо! Проверю вечером , т.к. сейчас на работе и выдалась своб минутка написать ...

прийду , и чтобы не терять времени сразу протестирую.

Добавлено через 11 часов 0 минут
Непомогло.... (((
0
2570 / 1850 / 402
Регистрация: 11.09.2009
Сообщений: 6,872
22.05.2018, 06:12 14
Цитата Сообщение от sam6780 Посмотреть сообщение
Не помогло...
А что именно происходит? Какой код ошибки возвращается в каждом случае (было/не было запущено)?
0
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 222
22.05.2018, 09:50  [ТС] 15
YuS_2, Спасибо большое , все идеально работает за ислючением того, что когда вылазет новое окно то в Taskmanagere вылазят окна программы - cmd ((( они нагромаждаются просто по истечению какого то времени. получается не совсем так как хотелось бы к сожалению... Ну а так впоряде - работает...

Сейчас код приобрел вид:

Windows Batch file
1
2
3
4
5
set "osn_p=C:\Program Files\1\Proga_1.exe"
set "osn_p1=Proga_1.exe"
set "osn_p2=Proga_222.exe"
cmd/c for /l %%i in () do @tasklist /fi "imagename eq %osn_p2%"^|findstr/v :^|^| (taskkill /f /im "%osn_p1%"^& start "" "%osn_p%")^&^>nul ping -n 21 127.0.0.1
tasklist /NH|>nul findstr /c:"Proga_1.exe"&&exit
Но вот эти CMD это тоже своеобразная катастрофа (
Ещё разок:
Цитата Сообщение от YuS_2
добавить в начало сценария

- Поменял в начало :
Windows Batch file
1
tasklist /NH|>nul findstr /c:"Proga_1.exe"&&exit
Все нормально работало если бы не "Proga_222.exe", которая время от времени включается. Во первых непойму почему, может проблемма в самом коде вышеизложенном и сценарий сбивается и запускает дубли ?

Но пробовал вставлять код:

Windows Batch file
1
2
tasklist | find /i "Proga_222.exe">nul
if %errorlevel%==1 Proga_222.exe
Почему то ничего не меняется. Т.к. я сам вручную запускаю "Proga_222.exe" что бы проверить... Тогда копия остается работать все равно, а я предполагаю, что бы не разбираться почему вылетает программа, а просто какой то код нужен cmd bat, что бы он каждую долю секунды проверял, зацикленно кпримеру, на наличии копии, и когда копия хотела б запускаться - код бы просто не дал этому произойти. Но это реально ли вообще . Или проще начать ли разбираться почему она запускается копией одной потом третей ? (((
... вот собст. в этом проблем ... (
0
Любознательный
1766 / 787 / 217
Регистрация: 10.03.2016
Сообщений: 1,845
22.05.2018, 10:46 16
Цитата Сообщение от sam6780 Посмотреть сообщение
если бы не "Proga_222.exe", которая время от времени включается.
Цитата Сообщение от sam6780 Посмотреть сообщение
Суть в том, что программа Proga_1.exe запускает Proga_222.exe
?

Цитата Сообщение от sam6780 Посмотреть сообщение
что бы он каждую долю секунды проверял, зацикленно кпримеру, на наличии копии, и когда копия хотела б запускаться - код бы просто не дал этому произойти. Но это реально ли вообще .
На cmd это сильно нагрузит процессор и поэтому такую туфту ... хотя, возможно, кто-нибудь и выложит...
А использовать что-либо кроме... к сожалению, в данном подразделе даже упоминать запрещено, иначе следуют санкции и страшные наказания... в общем, так вот как-то.
0
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 222
22.05.2018, 13:31  [ТС] 17
обВы правы. Надо подумать как сделать как то иначе. Мне не нужно нагружать ничего. Ярасчитывал, что безобидный батник решит мойвопрос, видимо надо порыть интернет и подумать , как сделать , что бы работало. Я думаю , что проблема в том, что Proga_222.exe запускается вышеописанным кодом время от времени.YuS_2, а вы не видети ничего такого , в том коде , что я когда собрал, что бымогло вызывать повторное влючение последней программы.???
Потому, что иначе пр дется как то зделать подругому все.
0
Заводной мандарин
1065 / 627 / 239
Регистрация: 05.05.2015
Сообщений: 3,544
Записей в блоге: 2
25.05.2018, 19:33 18
Цитата Сообщение от YuS_2 Посмотреть сообщение
А использовать что-либо кроме... к сожалению, в данном подразделе даже упоминать запрещено
Достаточно высказать свое мнение, что в cmd этого не сделать, либо выложить готовый код на другом языке как указано в правилах раздела, либо просто ничего не говорить и пройти мимо.

Не по теме:

Вам и нескольким Вашим товарищам зачем-то понадобилось пилигримить в соседнем разделе о втором пришествии cmd в образе святого PowerShell

0
3 / 3 / 1
Регистрация: 22.01.2013
Сообщений: 222
06.06.2018, 07:53  [ТС] 19
мимо проходить не буду. Не мой стиль... Я просто "нашел" другой выход )... Я убрал вышеописанные коды и оставил как есть пока, Что...
.. и Минус в том, что иногда вылетает "прога 1", как и раньше - поэтому и весь этот код и нужен был но это случается редко. В конце подумал, что могу, пока, сам время от времени перезапускать -не есть проблема. А когда побольше времени будет свободного от мирских дел то займусь поиском и решением задачи средствами других языков. А пока спасибо большое всем за участие в обсуждении )

Добавлено через 29 минут
Цитата Сообщение от Joey Посмотреть сообщение
Не по теме:
Вам и нескольким Вашим товарищам зачем-то понадобилось пилигримить в соседнем разделе о втором пришествии cmd в образе святого PowerShell
А я же говорил, что не программист но тему посмотрел ... Довольно Интересно!!! надо будет выделить часик в день на изучение если что.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2018, 07:53

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Бесконечный цикл с командами для обнаружения, завершения и запуска процесса
Всем привет столкнулся с проблемой написании цикла на CMD Он должен быть бесконечным. Цикл (Пишу...

Опции, Аргументы, Ключи, Параметры, Входные данные запуска процесса. Как узнать?
Здравствуйте!!! Возможно ли в windows какими- либо способами (типа tasklist!!!) в командной...

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

Запрет запуска программ в определённое время
Доброго времени суток. Подскажите плиз, как можно запретить запуск определённых программ по времени...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.