cmd.exe: когда использовать вызов для запуска внешних программ - PullRequest
17 голосов
/ 28 января 2011

Кажется, что сценарий cmd, содержащий:

prog1
prog2

делает то же самое, что и

call prog1
call prog2

Какой смысл использовать команду CALL?

Ответы [ 3 ]

21 голосов
/ 28 января 2011

Вам следует использовать call, если вы хотите:

  • вызвать другой командный файл и вернуться к нему, когда это будет сделано. ;или
  • вызов функции в текущем командном файле.

Файл команды со строкой:

number2.cmd

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

Что касается второго пункта, вы можете сделать такие вещи:

call :subroutine
call :subroutine
goto :eof

:subroutine
    echo in here
    goto :eof

и вы получите in here напечатанный дважды.Эта возможность вызывать функции внутри командных сценариев на самом деле очень удобна.

14 голосов
/ 28 января 2011

Вы должны использовать call, когда вам нужно вызвать другую пакетную программу (скрипт cmd).Использование 'call' не будет иметь никакого эффекта, если prog1 является исполняемым файлом.(prog1.exe)

Если у вас, например, есть два сценария:

cmd1.cmd
cmd2.cmd

А в cmd1.cmd есть строка:

cmd2.cmd

... тогда ваш скрипт остановится, как только cmd2.cmd будет завершен.Вместо этого вы должны использовать:

call cmd2.cmd
3 голосов
/ 28 января 2011

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

Обратите внимание, что если пакетный файл не существует, он выдаст сообщение об ошибке.CALL [drive:][path]filename [batch-parameters]

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

Надеюсь, это поможет.

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