Пакетный файл Windows ( called.bat
или called.cmd
) можно вызвать из другого командного файла ( caller.bat
или caller.cmd
) или интерактивного приглашения cmd.exe несколькими способами:
- прямой вызов:
called.bat
- используя команду вызова:
call called.bat
- используя команду cmd:
cmd /c called.bat
- используя команду запуска:
start called.bat
Мне сложно определить их предполагаемое использование на основе текста справки: когда использовать какой? например, почему я могу использовать команду «позвонить» вместо прямого вызова. Что изменилось?
Меня интересует некоторый сводный отчет, в котором анализируются все 4 возможности (и другие, если они отсутствуют) с различных точек зрения: рекомендуемые варианты использования, для которых они предназначены, создание процессов, контекст выполнения, среда, обработка кода возврата.
Примечание. Я использую Windows XP SP3.
источник
start "" [options] command
Из комментариев здесь неясно одно: когда вы вызываете один командный файл из другого, используя только его имя (случай № 1 в исходном вопросе), выполнение останавливается из вызывающего командного файла. Например, в этих строках:
called.bat echo Hello
Строка 'echo Hello' (и все, что следует за ней) не вызывается. Если вы используете ключевое слово call, выполнение возобновляется после вызова. Итак, в этом случае:
call called.bat echo Hello
Будет вызвана строка 'echo Hello'.
Кроме того, все переменные, установленные в файле called.bat, также будут переданы обратно вызывающему процессу.
Представьте себе файл named.bat, в котором есть такая строка:
set MYVAR=hello
Затем% MYVAR% будет доступен вызывающему пакетному файлу, если он использует:
Но он не использовал бы
источник