Подтвердить что ты не робот

Как вызвать один пакетный файл за другим

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

CALL ping.bat

Затем после запуска командного файла я хочу запустить другой файл:

CALL ping2.bat

Прямо сейчас у меня эти две строки рядом друг с другом в пакетном файле, первый пакетный файл будет успешно сработал, а второй - нет. Любые предложения?

CALL ping.bat
CALL ping2.bat

Ping.bat просто:

ping 127.0.0.1    
4b9b3361

Ответ 1

Убедитесь, что у вас нет exit где-то в первой партии. Некоторые люди обычно используют это, чтобы выпрыгнуть из пакетного файла, который не является правильным способом выхода из пакета (exit /b или goto :eof is).

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

Ответ 2

Есть шанс, что ваш ping.bat просто вызывает себя, если его содержимое просто ping 127.0.0.1, как вы говорите.

Я бы добавил .exe после ping, чтобы все было уверенно.

Как справедливо предложил Jeb, выбор другого имени для вашего пакетного файла - еще лучшее решение.

Ответ 3

Предположим, что у вас есть 3 пакетных файла.

  • ping1.bat, который имеет контент ping 127.0.0.1
  • ping2.bat, который имеет контент ping 127.0.0.1
  • ping3.bat, который имеет следующие две строки: позвоните в ping1.bat
    вызов ping2.bat

Если у вас есть все три пакетных файла в одной папке (скажем, под C:\NewFolder) то, если вы дважды щелкните ping3.bat, вы не получите никаких ошибок.

Примечание. Если вы не хотите ждать завершения первой команды, используйте ключевое слово start, которое просто инициирует процесс и продолжит следующую строку в пакетном файле, тогда как вызов будет делать это последовательно (доходит до следующей строки только после завершения текущего процесса, запуск позволяет parallelism)
Для этого используйте следующие две строки кода в ping3.bat:

начать ping1.bat
начать ping2.bat

Ответ 4

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

Ответ 5

Не совсем уверен, что вы хотели сделать здесь, но я предполагаю, что вы хотели это сделать:

  • запустите FIRST.bat
  • от FIRST.bat вы хотите позвонить SECOND.bat
  • Пока выполняется SECOND.bat, FIRST.bat должен оставаться приостановленным
  • После завершения SECOND.bat его выполнения FIRST.bat должен возобновить и вызвать THIRD.bat

В этом случае из вашего фактического пакетного файла вы должны запустить ping.bat и ping2.bat следующим образом:

::some code here
start /wait ping.bat
start /wait ping2.bat
::some code here

Затем в ping.bat и ping2.bat последняя строка должна быть выйти. Их код должен выглядеть так:

::some code here, might be ping 127.0.0.1
exit

Итак, теперь ваш фактический командный файл запустит ping.bat, и он будет ждать завершения (выхода). После закрытия ping.bat ваш фактический пакетный файл перейдет к следующей строке и запустится ping2.bat и т.д.

Ответ 6

Команда ping действует по-разному в разных операционных системах. Попробуйте заставить команду ping остановиться после нескольких эхо-запросов с помощью ключа -n.

ping -n 4 127.0.0.1