Запустите 2 файла одновременно и закройте один из них при закрытии

221
MaddoxX

Мне нужен код, чтобы пакетный файл запускал 2 программы одновременно, а когда одна программа закрывается, другая тоже закрывается. Например:

start program 1 start program 2  When I exit program 1, program 2 will exit as well. But not before program 1 does. 

Я уже пробовал этот код:

@echo off cd "C:\Program Files\CCleaner" start CCleaner64.exe  cd "C:\Program Files (x86)\Wunderlist2" start Wunderlist.exe 

Эта программа открывает обе программы одновременно, но когда я выхожу из "CCleaner", Wunderlist остается открытым.

0
Хорошо, на самом деле мне нужен код горячей клавиши для приложения, которое переключает определенный ключ только во время работы приложения! MaddoxX 6 лет назад 0

2 ответа на вопрос

1
Appleoddity

Вам нужно запустить программу 2 без ожидания, затем запустить программу 1 и дождаться ее завершения. После завершения вам нужно убить программу 2.

Попробуй это:

@echo off start "C:\Program Files (x86)\Wunderlist2\Wunderlist.exe” start /wait "C:\Program Files\CCleaner\CCleaner64.exe” taskkill /f /im “Wunderlist.exe” 
я не хочу, чтобы второе приложение закрывалось после того, как открылось первое, я хочу, чтобы они продолжали работать в то же время, и когда программа # 1 закрывается, программа # 2 также закрывается, что-то вроде запуска. прога 2 следует MaddoxX 6 лет назад 0
@MaddoxX, что именно то, что делает скрипт. Appleoddity 6 лет назад 0
-1
Pradyoth Shandilya

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

Сначала найдите идентификатор процесса обоих процессов. Правильно?

Затем просканируйте список процессов, запущенных с помощью grep или любой другой подобной команды. Делай это, скажи каждую секунду.

Проверьте, присутствуют ли оба идентификатора. В тот момент, когда ваш цикл обнаруживает, что один из процессов не найден, убейте другой.

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

Прокомментируйте здесь, если вы найдете лучшую идею

Идея будет работать, но ваше описание не очень понятно. На мой взгляд, этот ответ не поможет вообще. Если у вас есть несколько примеров сценариев на основе Windows для этого, то это поможет. Иначе это просто сбивает с толку. Appleoddity 6 лет назад 0
Правильно. Я не мог получить доступ к компьютеру под управлением Windows, и поэтому не мог дать сценарий. Я отредактирую ответ, как только получу руки на ноутбуке с Windows Pradyoth Shandilya 6 лет назад 0
Я не верю, что вы можете сделать это с помощью сценариев. В коде правильным подходом было бы запустить два потока, каждый из которых ожидает идентификатор процесса одной программы, а когда ожидание освобождает, он убивает другой процесс, если он все еще выполняется. Во время «работы» он будет находиться в состоянии ожидания, без использования процессорного времени. Loren Pechtel 6 лет назад 0