последовательно открывать несколько программ с помощью cmd

#windows #cmd #fork

#Windows #cmd #fork

Вопрос:

у меня есть последовательность из 3 программ, которые необходимо запускать одну за другой. Я нашел в Интернете что-то подобное, и это именно то, что я хочу сделать :

 start /wait /b First.exe
start /wait /b Second.exe
start /wait /b Third.exe
  

Моя проблема в том, что у меня есть 1000 последовательностей для запуска…
Итак, я попытался

 start "exemple" "start /wait /b First.exe
start /wait /b Second.exe
start /wait /b Third.exe"
start "exemple2" "start /wait /b First.exe
start /wait /b Second.exe
start /wait /b Third.exe"
  

Я также пытался

 start /b First1.exe
start /wait /b Second1.exe
start /wait /b Third1.exe

start /b First2.exe
start /wait /b Second2.exe
start /wait /b Third2.exe
  

Это тоже не работает…
Поэтому я не знаю, как это сделать.

есть идеи? спасибо 🙂

[ПРАВИТЬ ]

Давайте попробуем сделать это более понятным

 start "exemple" "start /wait /b First.exe
start /wait /b Second.exe
start /wait /b Third.exe"
start "exemple2" "start /wait /b First.exe
start /wait /b Second.exe
start /wait /b Third.exe"
  

Это не удалось, поскольку 2-й запуск не распознается, в нем говорится, что Windows не может найти ‘start / wait / b First.exe ‘

 start /b First1.exe
start /wait /b Second1.exe
start /wait /b Third1.exe

start /b First2.exe
start /wait /b Second2.exe
start /wait /b Third2.exe
  

Это не удалось, поскольку порядок
First1.exe и Second1.exe запускаются.
Затем компьютер дождется окончания Second1.exe для запуска First2.exe и Second2.exe …

Порядок, который я хотел бы, — это запуск компьютера First1.exe amp; First2.exe Second1.exe запускается, когда First1.exe законченный и Second2.exe запускается, когда First2.exe закончено.

Я бы хотел избежать использования одного .cmd для каждого выполнения (это было бы моим неудачным решением).

Хотелось бы, чтобы на этот раз я был более ясен!

Комментарии:

1. Не совсем понятно, что вы пытаетесь сделать?

2. Мало того, что это непонятно, вы не смогли сказать, почему ваши попытки не увенчались успехом. «Это не работает» никогда не помогает.

3. start является внутренней командой в CMD.EXE , он не может быть запущен из start команды, как это могут быть настоящие бывшие. Итак, если вы пытаетесь запустить first.exe с заголовком окна example , вы должны выполнить start "example" /wait First.exe … В противном случае, для чего ваш «пример»?

4. Следует отметить, что «start / wait / b» является избыточным, когда находится внутри командного файла. Просто говорю «First.exe » сам по себе будет делать точно то же самое.

5. Похоже, что во втором блоке кода вы ожидаете, что кавычки заставят несколько строк кода вести себя как одна строка. Этого не произойдет; эти кавычки вообще ничего не делают.

Ответ №1:

Вам понадобится один экземпляр cmd.exe для каждой последовательности, в дополнение к основному экземпляру. Операционная система не имеет встроенной поддержки процессов упорядочивания и cmd.exe не поддерживает потоковую передачу в командных файлах.

Вы можете сделать это следующим образом:

  start "sequence1" cmd /c "First.exe amp; Second.exe amp; Third.exe"
 start "sequence2" cmd /c "First.exe amp; Second.exe amp; Third.exe"
 start "sequence3" cmd /c "First.exe amp; Second.exe amp; Third.exe"
 ...
  

Единственный способ избежать (довольно скромных) накладных расходов на дополнительные экземпляры cmd.exe было бы написать решение на реальном языке программирования, а не в виде пакетного файла.

Вы также можете подумать, действительно ли это то, что вы хотите сделать. Обычно Windows работает не очень хорошо, когда одновременно выполняются сотни процессов.

Ответ №2:

Вы все еще выполняете ожидание в основном пакетном файле. Вы хотите, чтобы первая / вторая / третья последовательность была независимой для каждого цикла. Вы хотите, чтобы каждый цикл имел свой собственный /wait .

 start "exempel" cmd /c start /wait First.exe ^amp; start /wait Second.exe ^amp; start /wait Third.exe
  

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

Ответ №3:

как насчет добавления вызовов в один.CMD-файл, а затем выполнить его через пуск?

 @echo off
program1.exe
program2.exe
program3.exe
  

Чтобы проверить, все ли в порядке, вы можете проверить код возврата каждого отдельного прога в .BAT /.CMD (моя память продолжает говорить мне%ERRORLEVEL%, но я не уверен в этом 🙁 )