Как загрузить несколько программ в пакетном скрипте Windows? - PullRequest
0 голосов
/ 03 апреля 2020

Я пытаюсь создать пакетный файл для загрузки нескольких программ Windows, в частности, приложений, управляющих аппаратным обеспечением периферийных устройств.

Кажется, я не могу понять, как последовательно открывать все приложения. Я пробовал несколько вещей, включая запуск исполняемого приложения:

@echo off
cd "D:\Controls\" & start "D:\HW_Controls\Control1.exe" &
cd "D:\Controls\" & start "D:\HW_Controls\Control2.exe" &
cd "D:\Controls\" & start "D:\HW_Controls\Control3.exe"

Это будет запускать только одно приложение за раз, пока я не выйду из этого приложения, а это то, чего я не хочу. Я хочу, чтобы они открывались последовательно. Поэтому я прочитал где-то StackOverflow из старого поста, чтобы попытаться запустить каждое приложение как отдельный пакетный файл, например:

@echo off
start "D:\Controls1.bat" &
start "D:\Controls2.bat" &
start "D:\Controls3.bat"

, в котором каждый пакетный файл выглядит примерно так:

cd "D:\Controls\" & start "D:\HW_Controls\Control{1..3}.exe"

Я также пытался использовать chdir:

chdir "D:\Controls\" & start "D:\HW_Controls\Control{1..3}.exe"

Когда я пытаюсь загрузить внутри пакетный файл, он, похоже, не меняет каталог, а загружает только открывает командную строку, где начальный пакет Файл находится, в данном случае, в каталоге Desktop.

Я знаю, что есть варианты открыть их при запуске Windows, но это не то, что я хочу. Я хочу загрузить их, когда мне нужно использовать приложения.

БОНУСНЫЕ ТОЧКИ: Если кто-нибудь подскажет мне, как завершить работу всех приложений в пакетном скрипте, когда я закончу с ними.

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Пакетный парсер работает построчно. & используется для записи двух команд в одну строку. Поэтому нет смысла заканчивать строку символом &.

. Для удобства чтения использование & должно быть ограничено.

cd следует использовать с /d позволяет переключиться на другой диск.

start принимает первый цитируемый параметр в качестве заголовка окна, поэтому присвойте ему псевдо-заголовок.

start имеет Параметр /d для установки рабочей папки, поэтому вам вообще не нужен cd:

Таким образом, ваш пакетный файл упрощается до:

@echo off
start "" /d "D:\Controls\" "D:\HW_Controls\Control1.exe"
start "" /d "D:\Controls\" "D:\HW_Controls\Control2.exe"
start "" /d "D:\Controls\" "D:\HW_Controls\Control3.exe"
echo press any key to kill the program.
pause >nul
taskkill /im "Control1.exe"
taskkill /im "Control2.exe"
taskkill /im "Control3.exe"

Примечание: taskkill отправляет сигнал завершения для приложения. Если он не отвечает правильно, закрыв себя, вы можете принудительно закрыть его с помощью переключателя /f.

1 голос
/ 03 апреля 2020

Вот один из способов запуска сразу нескольких программ:

@For %%A in ("notepad.exe" "chrome.exe" "calc.exe") do start "" %%~A
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...