Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Bat ожидающий ЗАПУСК друго-го приложения. Реально? / 11 сообщений из 11, страница 1 из 1
04.07.2013, 03:12
    #38319819
JUnky RobBer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
Программированием не занимаюсь, но пытался решить задачу в ручную. Уперся в нехватку опыта.
Уверен, для опытных людей это элементарная задача.

Вопрос следующий. Ресурсы одной программы должны уступать другой. То-есть запуск одной программы должен завершать другую. А ее закрытие запускет обратно завершенную. И все это должно происходить под контролем третей.

Пример:
Есть 3 программы:
1.exe
2.exe
M.cmd (это собственно та, которую нужно написать)

=========================
КАК ЭТО ДОЛЖНО РАБОТАТЬ:
я запускаю, M.cmd, который выполняет следующие действия.

1. Запускаем 1.exe

2. Спокойно висим в процессах, и раз в секунду проверяем: запущен ли 2.exe

Пока не запущен — не производим никакий действий

3. Как только пользователь запускает 2.exe, мы находим его в процессах, и завершаем процесс 1.exe

4. После чего опять спокойно висим в процессах, и раз в секунду проверяем: запущен ли 2.exe

Пока он запущен - никаких действий не производится.

5. Как только пользователь закрывает 2.exe, мы открывает 1.exe обратно.

=========================

Вроде элементарно, но кажется таким нереальным для меня!
Заранее спасибо за ответ!
...
Рейтинг: 0 / 0
04.07.2013, 08:36
    #38319871
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
пункт 3 (самый сложный и аналогичный пункту 5):

Set ProcessName=2.exe
TaskList /FI "ImageName EQ %ProcessName%" 2>nul|Find /I "%ProcessName%">nul||(TaskKill /IM "1.exe")

и циклы со слипами и готами.
...
Рейтинг: 0 / 0
04.07.2013, 20:28
    #38321158
JUnky RobBer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
спасибо, пробую
...
Рейтинг: 0 / 0
05.07.2013, 06:34
    #38321346
JUnky RobBer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
eNose,

не получается... пытался понять как оно работает но не выходит. для упрощения сделал вместо 1.exe - notepad.exe, вместо 2.exe - mspaint.exe. в итоге при запуске программы происходит запуск mspaint.exe, потом по циклу его реское закрытие, и постоянно ошибка что notepad.exe ненайден. если запустить notepad.exe перед запуском программы, то mspaint.exe не закрывается до закрытия notepad.exe. то-есть они скорее синхронизировались в закрытии, чем взаимоисключили друг друга
...
Рейтинг: 0 / 0
05.07.2013, 08:45
    #38321386
JUnky RobBer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
Разобрался. Все заработало. Не удается только сделать так, что бы программа не пыталась удалять процесс mspaint.exe когда он уже удален.

Код такой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
@echo off

setlocal enabledelayedexpansion

::Запуск дежурной программы (паинт)
start mspaint.exe

tasklist | find /I "notepad.exe" > NUL

::Если блокнот не запущен
:notepad_off
IF %ERRORLEVEL% EQU 1 (
	echo NOT RUNNED
	ping 127.0.0.1 -n 2 >nul
	tasklist | find /I "notepad.exe" > NUL
	goto :notepad_off
)

::Если блокнот запущен
:notepad_run
IF %ERRORLEVEL% EQU 0 (
	::Проверяем завершен ли пеинт
	tasklist | find /I "mspaint.exe" > NUL
	::Если пеинт не завершен, завершаем (ВОТ ТУТ НЕ РАБОТАЕТ)
	IF %ERRORLEVEL% EQU 0 (
		echo MSPAINT WILL CLOSE
		taskkill /IM "mspaint.exe" /F
		goto :out
	)
	:out
	ping 127.0.0.1 -n 2 >nul
	tasklist | find /I "notepad.exe" > NUL
	goto :notepad_run
)
::Тут мы окажемся когда пользователь закроет блокнот, и запускаем пеинт опять
start mspaint.exe
goto :notepad_off
echo HOLEк

Не могу понять в чем проблема.
...
Рейтинг: 0 / 0
09.07.2013, 16:15
    #38325739
[defunct zombie]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
JUnky RobBerping 127.0.0.1 -n 2 >nul
Понимаю, что вендоюзеры от природы извращенцы, но даже для них придумали команду timeout /t 2.
...
Рейтинг: 0 / 0
09.07.2013, 16:18
    #38325747
[defunct zombie]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
JUnky RobBerНе удается только сделать так, что бы программа не пыталась удалять процесс mspaint.exe когда он уже удален.
tasklist|find (или как там у вас аналог грепа зовётся).
...
Рейтинг: 0 / 0
09.07.2013, 16:19
    #38325749
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
[quot [defunct zombie]]Понимаю, что вендоюзеры от природы извращенцы, но даже для них придумали команду timeout /t 2.[/quot]В Windows XP этой утилиты нет.

P.S. Только не надо про "Windows XP - тоже нет".
...
Рейтинг: 0 / 0
09.07.2013, 16:28
    #38325770
[defunct zombie]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
О чём и речь... извращенцы.

http://stackoverflow.com/questions/6812484/batch-file-test-error-level
...
Рейтинг: 0 / 0
09.07.2013, 16:31
    #38325775
[defunct zombie]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
Ваши идолы врут о поддержке команды timeout в ХРени?
http://technet.microsoft.com/en-us/library/cc754891(v=ws.10).aspx Applies To: Windows 7, Windows Server 2000, Windows Server 2003, Windows Server 2003 R2, Windows Server 2008, Windows Server 2008 R2, Windows Vista, Windows XP
...
Рейтинг: 0 / 0
09.07.2013, 17:56
    #38325953
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat ожидающий ЗАПУСК друго-го приложения. Реально?
"Поддерживается" и "входит в дистрибутив" - несколько разные вещи.
Так вот, в дистрибутив Windows Server 2003 утилита timeout включена, а в дистрибутив Windows XP - нет.
В одном из комментариев об этом, кстати, сказано.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Bat ожидающий ЗАПУСК друго-го приложения. Реально? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]