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

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

Ответить
Настройки темы
CMD/BAT - [решено] Скрипт для авто выключения одного приложения при ручном выключении другого (.exe)

Аватара для vk_k14m@vk

Старожил


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


Конфигурация

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


Изменения
Автор: vk_k14m@vk
Дата: 03-06-2018
Использую подобный скрипт:
Код: Выделить весь код
@ECHO OFF
START "" Program.exe
ping 127.0.0.1 -n 15 >nul
START "" Program2.exe
Тоесть когда я запускаю скрипт, то он сразу запускает приложение Program.exe, после чего через 15 секунд запускает "вспомогательное" приложение Program2.exe. Далее нужно сделать, что б после выключения приложения Program.exe скрипт автоматически, через 15 секунд выключал и "вспомогательное" приложение Program2.exe.

И еще, если можно. Нужно сделать что б этот скрипт как-то скрывался. Сворачивался в трей или еще чего. Что б окно командной строки не маячило перед глазами.

-------
Взялся отвечать, отвечай до конца!


Отправлено: 10:33, 03-06-2018

 

Аватара для YuS_2

Crazy


Contributor


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

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


Цитата vk_k14m@vk:
через 15 секунд выключал и "вспомогательное" приложение Program2.exe. »
Выключал - громко сказано. Всё что умеет чистый cmd - "убивать" приложения командой taskkill. Если устроит - это организовать несложно.
Что-то другое, т.е. для корректного завершение работы, а также для скрытия окна CMD - как минимум, понадобится WSH, powershell или внешние приложения...

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:20, 03-06-2018 | #2



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

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

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата vk_k14m@vk:
Что[]б окно командной строки не маячило перед глазами. »
Делайте не пакетный файл, а VB-скрипт. Им же организуете и убиение процесса через заданное время.
И тогда никаких пингов — а штатная директива Sleep, не отнимающая у системы лишнее время на обработку.

-------
Mikhail Zhilin

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:21, 03-06-2018 | #3


Ветеран


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

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


Цитата YuS_2:
Всё что умеет чистый cmd - "убивать" приложения командой taskkill. »
Вообще-то, нет: именно taskkill.exe (без использования параметра /f) делает попытку закрытия главного окна приложения (путём отсылки сообщения). WSH этого не умеет (в Вашей трактовке — умеет только «убивать» процесс).
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:59, 03-06-2018 | #4


Аватара для vk_k14m@vk

Старожил


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

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


Цитата mwz:
Делайте не пакетный файл, а VB-скрипт. Им же организуете и убиение процесса через заданное время.
И тогда никаких пингов — а штатная директива Sleep, не отнимающая у системы лишнее время на обработку. »
Мне не нужно убиение процесса через заданное время. Мне нужно убиение второго процесса когда первый процесс завершается. Так как этот процесс может длится 20 минут, а может 6 часов. Время его работы не фиксировано. Грубо говоря, когда я закрываю первое приложение, второе тоже должно закрыться. Не важно каким способом.

Цитата mwz:
Делайте не пакетный файл, а VB-скрипт. Им же организуете и убиение процесса через заданное время.
И тогда никаких пингов — а штатная директива Sleep, не отнимающая у системы лишнее время на обработку. »
Я без понятия что такое VB-скрипт.

-------
Взялся отвечать, отвечай до конца!


Отправлено: 14:10, 03-06-2018 | #5


Ветеран


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

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


Цитата vk_k14m@vk:
Мне нужно убиение второго процесса когда первый процесс завершается »
Это можно сделать, добавив параметр /wait к старту первой программы, но тогда, скорее всего, придется запускать вторую программу предварительно дополнительным батником со своим таймером)))

Отправлено: 15:44, 03-06-2018 | #6


Аватара для vk_k14m@vk

Старожил


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

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


Цитата gannet:
Это можно сделать, добавив параметр /wait к старту первой программы, но тогда, скорее всего, придется запускать вторую программу предварительно дополнительным батником со своим таймером))) »
Я знаю что так можно сделать. Но такой вариант мне не подходит.

Можно вообще вручную запускать обе программы а потом вручную обе закрывать.

-------
Взялся отвечать, отвечай до конца!


Отправлено: 15:48, 03-06-2018 | #7


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Iska:
именно taskkill.exe (без использования параметра /f) делает попытку закрытия главного окна приложения (путём отсылки сообщения). »
Верно, это я перепутал с mortscript-ом, там kill именно kill... давно не пользовался...
Цитата Iska:
WSH этого не умеет »
Хмм, почему-то думал, что там есть CloseMainWindow()...
Ну, тогда powershell поможет...

Цитата vk_k14m@vk:
Я знаю что так можно сделать. Но такой вариант мне не подходит. »
Тогда зациклить мониторинг наличия процесса через каждые 15 сек и закрывать вторую программу, если первая не обнаруживается. Но батник будет резидентом, т.е. постоянно находиться в памяти, до закрытия второго процесса.

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 03-06-2018 в 17:12.

Это сообщение посчитали полезным следующие участники:

Отправлено: 16:17, 03-06-2018 | #8


Аватара для vk_k14m@vk

Старожил


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

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


А ладно. Забейте. Как то это слишком сложно...

-------
Взялся отвечать, отвечай до конца!


Отправлено: 16:24, 03-06-2018 | #9


Ветеран


Contributor


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

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


vbs
Код: Выделить весь код
PrgDir1 = "D:\Games\Marriage V2.3"
PrgExe1 = "marriage.exe"

PrgDir2 = "D:\Games\BUBBLES3"
PrgExe2 = "BS3.EXE"

Paus = 15   'Пауза сек

Set WMI = GetObject("winMgmts:")
Set WShell = CreateObject("WScript.Shell")

' Если PrgExe1 запущен, убъем его
Set Processes = WMI.ExecQuery("Select *From Win32_Process Where Name=" + """" + PrgExe1 + """")
For Each Process In Processes
    Process.Terminate
Next

' Запустим PrgExe1
WShell.CurrentDirectory = PrgDir1
R1 = WShell.Run(PrgExe1, 7, False)

WScript.Sleep Paus * 1000

' Если PrgExe1 запустилась, запустим PrgExe2
Set Processes = WMI.ExecQuery("Select *From Win32_Process Where Name=" + """" + PrgExe1 + """")
If Processes.Count > 0 Then
    WShell.CurrentDirectory = PrgDir2
    R2 = WShell.Run(PrgExe2, 7, False)
Else
    WScript.Quit 1
End If

' Опрашиваем. Если нет PrgExe1 убъем PrgExe2 и завершим скрипт
Do
    WScript.Sleep Paus * 1000
    Set Processes = WMI.ExecQuery("Select *From Win32_Process Where Name=" + """" + PrgExe1 + """")
    If Processes.Count = 0 Then
        Set Processes = WMI.ExecQuery("Select *From Win32_Process Where Name=" + """" + PrgExe2 + """")
        For Each Process In Processes
            Process.Terminate
        Next
        Exit Do
    End If
Loop

MsgBox "Нет " + PrgExe1 + " и " + PrgExe2 + ".  Скрипт завершен"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:24, 03-06-2018 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - как дождать завершения одного процесса для начала другого? ruslaw Скриптовые языки администрирования Windows 6 17-01-2018 12:00
Разное - как создать exe для запуска другого exe с параметрами, из той же папки vzli_izv Программирование и базы данных 12 08-06-2013 14:49
VBS/WSH/JS - Скрипт VBS для запуска .bat-файла при выключении компьютера(сценарий) W1nn1ep00h Скриптовые языки администрирования Windows 2 16-05-2013 16:31
CMD/BAT - [решено] bat скрипт - инсталятор модулей для одного java приложения bombording Скриптовые языки администрирования Windows 2 08-06-2009 15:33
Ошибка при выключении другого компьютера Irvix Microsoft Windows 95/98/Me (архив) 1 25-03-2003 08:38




 
Переход