Как запускать несколько пакетных файлов в последовательном режиме, в среде командной строки Windows

У меня есть пакетный файл,

bat1.bat
bat2.bat

но он останавливается в конце bat1

любые подсказки?

Ответ 1

Используйте call:

call bat1.cmd
call bat2.cmd

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

В принципе, если у вас такая партия:

@echo off
echo Foo
batch2.cmd
echo Bar

то он будет выводить только

Foo

Если вы пишете его как

@echo off
echo Foo
call batch2.cmd
echo Bar

однако он выведет

Foo
Bar

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

Ответ 2

Это может произойти, если bat1.bat останавливается ненормально (кроме как только работает до конца, как вызов exit), и вы можете обойти это, используя новый cmd.exe для запуска каждого файла bat:

start /b /wait bat1.bat
start /b /wait bat2.bat

Вы можете опустить его для последнего, если в вашем файле bat не будут следовать команды.

Ответ 3

Что-то еще нужно искать:

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

Я узнал, что у меня была команда exit в конце командного файла, которая закрыла окно DOS перед возвратом в исходный файл .bat и завершая там команды.

Ответ 4

Чтобы запустить несколько файлов .exe за один раз, сначала вам нужно создать файл .bat, а затем добавить все ваши .exe файлы, как показано ниже:

  D:\Data\Feed.exe Books.xml
  D:\Data\Feed.exe Mobile.xml
  D:\Data\Feed.exe Clothes.xml

И затем сохраните как something.bat, затем дайте ему пробег с cmd.

Ответ 5

Если вы хотите запускать пакетные файлы последовательно, вам нужно будет поместить "start bat1.bat" в конец каждого файла.