Команда START позволяет запускать приложения в отдельном окне, с возможностью указания некоторых параметров их выполнения.
1. Описание команды START.
1.1. Формат командной строки:
C:\ START ["заголовок"] [/D путь] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] [/NODE < узел NUMA >] [/AFFINITY < маска сходства >] [/WAIT] [/B] [команда/программа] [параметры]
Для получения справочной информации используется команда start /?
1.2. Параметры командной строки:
- «заголовок» — заголовок окна. Обязательно в двойных кавычках.
- путь — рабочий каталог для запускаемого приложения.
- B — запуск приложения без создания нового окна с отключением обработки сочетания клавиш CTRL+C. Если приложение не обрабатывает сочетание клавиш CTRL+C самостоятельно, единственным способом его прерывания является использование сочетания клавиш CTRL+Break.
- I — Новой средой станет исходная среда, переданная cmd.exe, а не текущая среда.
- MIN — Запуск команды/программы в свернутом окне.
- MAX — Запуск команды/программы в развернутом окне.
- SEPARATE — Запуск 16-разрядной программы Windows в отдельной области памяти.
- SHARED — Запуск 16-разрядной программы Windows в общей области памяти.
- LOW — Запуск приложения с приоритетом IDLE (самый низкий приоритет).
- NORMAL — Запуск приложения с приоритетом NORMAL.
- HIGH — Запуск приложения с приоритетом HIGH.
- REALTIME — Запуск приложения с приоритетом REALTIME (самый высокий приоритет).
- NODE — Указывает предпочтительный узел NUMA в качестве десятичного целого числа.
- AFFINITY — Содержит маску сходства процессора в виде шестнадцатеричного числа. Процесс будет выполняться только на этих процессорах. Маска сходства интерпретируется по-разному при совмещении параметров /AFFINITY и /NODE. Укажите маску сходства таким образом, как если бы маска процессора узла NUMA сдвинута вправо и начинается на нулевом бите. Выполнение этих процессов ограничено процессорами, общими для указанной маски сходства и узла NUMA. Если общих процессоров не существует, то выполнение процесса ограничено указанным узлом NUMA.
- WAIT — Запуск приложения с ожиданием его завершения.
- ABOVENORMAL — Запуск приложения с классом приоритета ABOVENORMAL (выше стандартного)
- BELOWNORMAL — Запуск приложения с классом приоритета BELOWNORMAL (ниже стандартного)
- команда/программа — Если это внутренняя команда cmd.exe или пакетный файл, обработчик команд (cmd.exe) запускается с ключом /K. Это означает, что окно не будет закрыто после завершения команды. Если это не внутренняя команда cmd.exe и не пакетный файл, значит, это программа, которая будет запущена в графическом или текстовом окне.
- параметры — Параметры, передаваемые команде/программе.
Примечание: параметры SEPARATE и SHARED не поддерживаются на 64-разрядных платформах.
Параметры для мультипроцессорных систем /NODE и /AFFINITY не поддерживаются в операционной системе Windows Vista и более ранних версиях ОС Windows.
Указание параметра /NODE позволяет создавать процессы таким образом, чтобы использовать память в системах NUMA. NUMA (Non-Uniform Memory Access — «Неравномерный доступ к памяти» или Non-Uniform Memory Architecture — «Архитектура с неравномерной памятью») — технология, используемая в многопроцессорных системах, использующих общую память. Технология NUMA впервые была реализована в процессорах Intel Xeon. Архитектура системы с NUMA — это множественные узлы, имеющие доступ как к своей локальной памяти, так и к памяти других узлов. Формально память разделяется на быструю локальную и относительно медленную удаленную (поэтому память и “неравномерная”). Например, два процесса, которые взаимодействуют друг с другом через общую память, могут совместно использовать один и тот же предпочтительный узел NUMA для минимизации задержки памяти. Память выделяется из одного узла NUMA по возможности, что позволяет процессам выполняться на процессорах вне указанного узла:
C:\ start /NODE 1 application2.exe C:\ start /NODE 1 application1.exe
Эти процессы можно ограничить для выполнения на определенных процессорах в одном узле NUMA. В следующем примере приложение application1 выполняется на низкоприоритетных процессорах узла, а приложение application2 выполняется на двух следующих процессорах узла. В этом примере предполагается, что указанный узел имеет минимум четыре логических процессора. Обратите внимание на то, что номер узла можно изменить на другой действительный номер для компьютера без изменения маски сходства:
C:\ start /NODE 1 /AFFINITY 0x3 application1.exe C:\ start /NODE 1 /AFFINITY 0xc application2.exe
Применительно к стандартным однопроцессорным, но многоядерным процессорам, практическое применение параметров /NODE и /AFFINITY заключается в возможности запуска приложений на конкретных ядрах CPU. Параметр /NODE для однопроцессорных систем всегда равен нулю, а параметр /AFFINITY определяют битовую маску выбора процессорных ядер. Подробнее – в примерах ниже.
Для вызова неисполняемых файлов через механизм сопоставления типов файлов достаточно просто ввести имя файла в командной строке. Например, команда
C:\ START MYFILE.TXT
приведет к запуску текстового редактора NOTEPAD с открытием файла MYFILE.TXT. Сведения о создании подобных сопоставлений из командных файлов приведены в описаниях команд ASSOC и FTYPE.
При запуске приложения с графическим интерфейсом пользователя обработчик команд CMD.EXE не ожидает завершения работы приложения перед возвратом к приглашению командной строки. Подобное новое поведение НЕ относится к запуску приложений из пакетных файлов.
При выполнении командной строки, первым элементом которой является текстовая строка «CMD» без расширения имени файла или указания пути, она заменяется значением переменной COMSPEC. Это предотвращает запуск CMD.EXE из текущей активной папки, если таковая программа там имеется.
Если первый элемент командной строки не содержит расширения имени файла, обработчик команд CMD.EXE использует значение переменной среды PATHEXT, чтобы определить расширения имен исполняемых файлов и порядок поиска нужного файла. По умолчанию для переменной PATHEXT задается значение:
.COM;.EXE;.BAT;.CMD
Обратите внимание, что этот синтаксис подобен синтаксису для переменной PATH, то есть отдельные элементы разделяются точкой с запятой.
Если при поиске исполняемого файла нет соответствия ни одному из расширений, выполняется проверка соответствия указанного имени папки. Если имя папки соответствует указанному, то команда START запускает EXPLORER для этого пути. Если такое действие выполняется из командной строки, то оно эквивалентно выполнению команды CD /D для указанного пути. Так, например, команда
C:\ start C:\windows
откроет папку C:\windows в окне проводника.
2. Примеры использования.
2.1. Выдать справку об использовании команды:
C:\ start /?
2.2. При запуске без параметров будет открыто новое окно интерпретатора команд CMD:
C:\ start
2.3. Как и в предыдущем случае, выполнится запуск CMD в новом окне, но в качестве заголовка окна будет отображаться текст My new CMD window:
C:\ start "My new CMD window"
2.4. Выполнится запуск по расширению .msc диспетчера устройств Windows:
C:\ start devmgmt.msc
2.5. Выполнится запуск обозревателя Интернет и откроется страница поисковика Google:
C:\ start http://google.com
2.6. Выполнится запуск почтового клиента в режиме подготовки электронного письма для адреса test@mail.ru:
C:\ start mailto:test@mail.ru
2.7. Выполнится запуск блокнота в свернутом окне:
C:\ start /min notepad.exe
2.8. Запуск командного файла в свернутом окне с пониженным приоритетом:
C:\ start "Backup Files" /min /belownormal mybackup.bat
2.9. Запуск редактора Microsoft Word в новом окне, развернутом на весь экран и с повышенным приоритетом:
C:\ start /abovenormal /MAX winword.exe
2.10. Запуск программы MyGame с высоким приоритетом:
C:\ start "" /high /MAX "C:\Program Files\Good game\MyGame"
2.12. Управление приоритетами удобно использовать для обеспечения комфортной работы пользователя с интерактивными приложениями на фоне выполнения длительных расчетных задач. Так, например при равных приоритетах редактора MS Word, и расчетной задачи, потребляющей значительную долю ресурсов центрального процессора, может возникнуть эффект подвисаний при работе с текстовым документом. Снижение же приоритета расчетной задачи создаст нормальные условия для работы пользователя, который практически не заметит никакого влияния на работе с документами, поскольку расчетная задача будет в основном выполняться на фоне режима ожидания редактора MS Word. Аналогичным образом можно добиться комфортной работы с интерактивными приложениями с одновременным выполнением ресурсоемких расчетных задач – либо повышая приоритет первых, либо занижая приоритет вторых.
Обратите внимание на то что заголовок окна можно опускать, но особенность обработки входных параметров командой start может привести к неожиданным результатам при попытке запуска программы, имя или путь которой содержит пробел(ы). Например, при попытке выполнить следующую команду:
C:\ start "C:\Program Files\FAR\FAR.EXE"
Из-за наличия пробела в пути к исполняемому файлу, строка для запуска FAR.EXE должна быть заключена в двойные кавычки, однако формат входных параметров для start предполагает обязательное наличие заголовка окна, также заключаемого в двойные кавычки, в результате чего «C:\Program Files\FAR\FAR.EXE» интерпретируется не как исполняемая программа, а как заголовок окна, и команда START выполнит запуск интерпретатора CMD с заголовком окна «C:\Program Files\FAR\FAR.EXE» . Для того, чтобы подобного не случилось нужно использовать любой, пусть даже пустой, заголовок:
C:\ start "" "C:\Program Files\FAR\FAR.EXE"
При выполнении запуска командных файлов с помощью команды start, окно интерпретатора команд (cmd.exe) запускается с параметром /K, т. е. после выполнения команд в командном файле завершения cmd.exe не происходит. Например, имеется командный файл test.bat следующего содержания:
C:\ ECHO TEST
При его запуске командой start test.bat выполнится echo и окно командного процессора останется открытым в режиме ожидания ввода команд пользователем. Этот факт нужно учитывать при использовании команды start в сценариях, выполняющихся автоматически без вмешательства человека-оператора. Для закрытия окна CMD после выполнения командного файла достаточно в его конец добавить команду EXIT.
ECHO TEST
EXIT
Команда START кроме всего прочего, позволяет распределять процессорные ядра между запускаемыми приложениями. Иногда это позволяет решить проблему невозможности запуска устаревших приложений, разработанных еще во времена одноядерных систем. Например, старые игры, которые не запускаются с выдачей ошибки типа negative delta time, или зависают с искажением изображения или звука. Подобное наблюдается в некоторых модах S.T.A.L.K.E.R Shadow Of Chernobyl, когда могут возникать зависания при старте программы и при отображении основного меню игры. Запуск игры на одном ядре процессора, как правило, решает эти проблемы.
Для однопроцессорных систем параметр /NODE равен нулю, а параметр /AFFINITY определяют битовую маску для выбора ядер процессора:
- 0x1 – первое ядро.
- 0x2 – второе ядро.
- 0x4 – третье ядро.
- 0x8 – четвертое ядро.
И так далее. Например, для запуска приложения Блокнот (notepad.exe) на третьем ядре процессора (битовая маска – 0100, или 4 в шестнадцатеричной системе счисления) нужно выполнить команду:
C:\ start /node 0 /affinity 0x4 notepad.exe
Для запуска приложения на первом и четвертом ядре (битовая маска – 1001, или 9 в шестнадцатеричной системе счисления):
C:\ start /node 0 /affinity 0x9 notepad.exe
Для выбора 2-го, 3-го и 4-го ядер – двоичная маска равна 1110 или числу 0xE в шестнадцатеричном виде:
C:\ start /node 0 /affinity 0xE notepad.exe
Для большинства версий команды START, параметр /NODE по умолчанию равен нулю и его можно не задавать:
C:\ start /affinity 0xE notepad.exe
Если маска не задана, или все ее биты равны единице, то приложение будет выполняться на всех ядрах процессора.