Форум программистов, компьютерный форум, киберфорум
Наши страницы

Batch (CMD/BAT)

Войти
Регистрация
Восстановить пароль
 
edw1111
0 / 0 / 0
Регистрация: 10.12.2017
Сообщений: 3
#1

Один экземпляр процесса - CMD/BAT

10.12.2017, 21:22. Просмотров 195. Ответов 7
Метки нет (Все метки)

Всем привет
У меня есть батник, мне надо чтобы его нельзя было запустить больше 1 экземпляра
т.е мне надо как то посчитать открытые одинаковые процессы и если их больше 1, то закрыть 1 экземпляр но как это правильно написать я не знаю
Спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2017, 21:22
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Один экземпляр процесса (CMD/BAT):

.NET 3.x Args и один экземпляр - C#
Делаю аудио плеер. И столкнулся с такой ситуацией: 1. Нужно открывать файл программой просто нажав на него(тут через args сделал). 2....

Один экземпляр программы - C#
Добавлено через 43 минуты Если программа запущена, как сделать чтобы второй раз её нельзя было запустить? Т.Е. не должно одновременно...

Не удалось сформировать пользовательский экземпляр SQL Server из-за ошибки при запуске процесса для экземпляра пользователя - C# ASP.NET
Всем привет. В названии темы сама загвоздка. Перепробовал вроде бы уже всё. http://support.microsoft.com/kb/2002980/ru сделал всё как...

Запустить только один экземпляр формы - Visual Basic .NET
При создание приложении на vb net, все приложения можно запустить несколько раз.Как запустить только один экземпляр формы?

Один экземпляр класса для всех активити - Программирование Android
Как это можно реализовать?Если класс не поддается сериализации.

Настроить БД, чтобы использовался только один её экземпляр - Visual Basic .NET
Как настроить бд чтобы использовался только один её экземпляр с ним и происходила работа? Помогите разобраться со свойством бд...

7
alpap
1344 / 1075 / 341
Регистрация: 26.04.2015
Сообщений: 3,868
11.12.2017, 00:19 #2
Цитата Сообщение от edw1111 Посмотреть сообщение
больше 1 экземпляра
на cmd такого не сделать, но опишите проблему детально и цель, возможно проблема в другом или решение будет другим
0
v_svitere
332 / 269 / 94
Регистрация: 03.06.2009
Сообщений: 799
Записей в блоге: 4
11.12.2017, 13:16 #3
Очень просто реализовать на powershell, при помощи WMI-класса win32_proccess и переменной окружения $PID
PowerShell
1
2
3
4
5
function test-duplicate-process
{
    $PoshCommandLine=Get-WmiObject win32_process|?{$_.name -eq "powershell.exe" -and $_.Processid -ne  $pid}|%{$_.commandline}
    if ($PoshCommandLine -match "script_task_working"){Stop-Process -Id $pid}
}
1
Dragokas
Эксперт WindowsАвтор FAQ
16614 / 6999 / 848
Регистрация: 25.12.2011
Сообщений: 10,795
Записей в блоге: 16
13.12.2017, 14:41 #4
edw1111, можете после запуска батника сохранять PID "себя" в файл: см. подпрограмму в конце: Полезные BAT/CMD скрипты

А перед тем как сохранить, наоборот, считываете этот PID из файла, и если он принадлежит процессу cmd.exe, запрещать его запуск.

Цитата Сообщение от v_svitere Посмотреть сообщение
Очень просто реализовать на powershell, при помощи WMI-класса win32_proccess и переменной окружения $PID
Если я правильно понял, ему нужно запретить запуск одного и того же батника, а не любого cmd.
Но это уже пусть ТС объяснит.

P.S. да и у CMD тоже есть доступ к WMI через wmic.
1
v_svitere
332 / 269 / 94
Регистрация: 03.06.2009
Сообщений: 799
Записей в блоге: 4
13.12.2017, 15:44 #5
Dragokas,
Если я правильно понял, ему нужно запретить запуск одного и того же батника, а не любого cmd.
Так я же именно про это и говорю.
Просто у объекта процесса, в свойстве commandLINE, по идее, должен прописываться полный путь до запущенного BAT-файла, но я могу это с уверенностью сказать в разрезе POWERSHELL-сценариев

Идея такая:
В начале сценария ставится проверка, которая выполняет следующее:
1. Получаем все процессы CMD за исключением собственного
2. Получаем CommandLine каждого процесса
3. Если в CommandLine однозначно определяем запущенный батник, то закрываем собственный процесс.

Примерно так.
2
edw1111
0 / 0 / 0
Регистрация: 10.12.2017
Сообщений: 3
14.12.2017, 15:22  [ТС] #6
Да , у меня есть bat файл и он выполняет некоторые приложения
и если нажать на этот бат файл несколько раз, то он запускает много этих приложений, что вызывает нереальные лаги компьютера
мне же надо чтобы даже если я тысячу раз нажму на него запустилось всего одно приложение
0
v_svitere
332 / 269 / 94
Регистрация: 03.06.2009
Сообщений: 799
Записей в блоге: 4
14.12.2017, 17:48 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
edw1111,
Да , у меня есть bat файл и он выполняет некоторые приложения
Тогда и того проще, сделайте в начале BAT-файла проверку на уже запущенный процесс приложения.
В том случае если таковой уже имеется, можно завершать выполнение BAT-файла.
Я думаю, тут пару строк кода, знатоки CMD, вам помогут, я могу помочь если вас устроит вариант на powershell
1
edw1111
0 / 0 / 0
Регистрация: 10.12.2017
Сообщений: 3
14.12.2017, 18:21  [ТС] #8
Все, я разобрался , большое спасибо
0
14.12.2017, 18:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2017, 18:21
Привет! Вот еще темы с ответами:

Как сделать только один экземпляр приложения? - C#
Как мне сделать только один экземпляр приложения? К примеру у меня программа висит в трее, и если я опять нажму на exe-шник, то хочу чтобы...

Послать один экземпляр события несколько раз - ActionScript
Возможно диспатчить один инстенс несколько раз изменяя его свойства? Я некогда этого не делал, но удивился, что решения не нашёл.

Оставить в строке только один экземпляр каждого встречающегося символа - Turbo Pascal
С клавиатуры вводится строка. Оставить в строке только один экземпляр каждого встречающегося символа.

Оставить в строке только один экземпляр каждого встречающегося символа. - Pascal ABC
оставить в строке только один экземпляр каждого встреяающегося символа.


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

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

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