Похоже, что я могу использовать либо start
либо call
для выполнения командных файлов, однако я не уверен, почему вы используете один поверх другого. Каковы преимущества?
2 ответа
call
запускает данный скрипт внутри одного и того же экземпляра интерпретатора, поэтому его можно использовать только для пакетных файлов, но он позволяет вызываемому скрипту изменять среду вызывающей стороны с помощью set
. В Windows NT call
также позволяет вызывать метки как подпрограммы; например, call :foo
.
С другой стороны, start
использует функцию ShellExecute(), поэтому ее можно использовать для открытия практически всего, что может открыть сама Windows, включая документы, другие файлы и даже URL-адреса в Интернете. start
также есть параметры, позволяющие открыть отдельное окно консоли, использовать разные приоритеты процесса и запустить программу, не дожидаясь ее завершения. Однако, если вы используете start
с командным файлом, он будет выполняться в отдельном интерпретаторе, и любые изменения в среде не будут видны вызывающей стороне.
C:\>start /?
Starts a separate window to run a specified program or command.
C:\>call /?
Calls one batch program from another.
Вызов не запускается в новом окне и может использоваться для вызова подпрограммы с меткой.