Передача аргументов командной строки
Исполняемые программы можно запускать из командной строки, вызывая их по имени. Например, чтобы запустить исполняемый файл «WordCount«, который находится в корневом каталоге диска C: на компьютере с Windows, вы можете ввести:
Чтобы передать аргументы командной строки в WordCount, мы просто перечисляем их после имени исполняемого файла:
Теперь при выполнении WordCount Myfile.txt будет предоставлен в качестве аргумента командной строки. Программа может иметь несколько аргументов командной строки, разделенных пробелами:
Это также работает и в других операционных системах командной строки, таких как Linux (хотя приглашение и структура каталогов, несомненно, будут отличаться).
Если вы запускаете свою программу из среды IDE, в среде IDE должен быть предусмотрен способ ввода аргументов командной строки.
В Microsoft Visual Studio кликните правой кнопкой мыши на своем проекте в обозревателе решений и выберите «Свойства» (Properties). В открывшемся окне разверните дерево «Свойства конфигурации» (Configuration Properties) и выберите «Отладка» (Debugging). На правой панели есть строка с названием «Аргументы команды» (Command Arguments). Вы можете ввести туда аргументы командной строки для тестирования, и они будут автоматически переданы вашей программе при ее запуске.
Рисунок 1 – Задание аргументов командной строки в Microsoft Visual Studio
В Code::Blocks выберите «Project» (Проект) → «Set program’s arguments» (Установить аргументы программы).
Рисунок 2 – Задание аргументов командной строки в Code::Blocks
Параметры командной строки с ExecParm
Для начала скачаем программу, для системы нужной разрядности.
Скачем обычный архив, распаковать который можно куда угодно. В нем будет всего три файла – ExecParm.txt, Execparm.dll и Execparm.inf.
А где же исполняемый файл, спросите вы, как установить-то? Очень просто. Достаточно щелкнуть на файле Execparm.inf правой кнопкой мыши и выбрать команду Установить.
В сущности, таким образом в системный реестр просто добавиться несколько записей. Теперь достаточно щелкнуть на исполняемом файле программы правой кнопкой мыши и выбрать команду Execute With Parameters (т.е. запустить с параметрами командной строки).
Осталось указать необходимые параметры и щелкнуть на кнопке ОК. Возможно, это способ понравится кому-то больше, чем первый, более традиционный, вариант.
4 способ: с помощью команды cd
Эта команда откроет указанную папку, и уже из нее мы запустим нужный нам файл. Например, зайдем в папочку TeamViewer:
cd c:program files eamviewer
После «cd» поставьте пробел. Жмите «Enter» .
В этой папке хранится файл, которым запускается TeamViewer, он имеет одноименное название. Поэтому дальше ввожу:
нажимаю «Enter» и утилита запускается.
Если нужно открыть приложение, которое установлено не на системном диске, то использовать можете команду path . Если я наберу:
path d:program filesccleaner
(после ввода каждой строки жмите «Enter» ), то у меня откроется CCleaner. Именно он установлен по указанному пути на диске D: .
А вот с помощью команды cd этого сделать не получится.
Как запустить программу через командную строку Windows
Большинство пользователей операционной системы Windows привыкли запускать нужное приложение или игру двойным кликом по ярлыку, расположенному на рабочем столе, или найдя его в Пуске. Как вариант, можно открыть папку, в которой оно установлено, и уже оттуда запустить exe-шный файл.
Поскольку такой запуск приложений может подойти не всегда, в данной статье давайте рассмотрим несколько различных способов, используя которые получится запустить программу из командной строки.
Для начала нужно открыть окно консоли. Как это сделать, подробно описано в статье: вызов командной строки Windows.
Передача аргументов командной строки
Исполняемые программы могут запускаться в командной строке через вызов. Например, для запуска исполняемого файла , который находится в корневом каталоге диска C в Windows, вам нужно ввести:
Чтобы передать аргументы командной строки в , вам нужно будет их просто перечислить после имени исполняемого файла:
Теперь, при запуске , будет предоставлен в качестве аргумента командной строки. Программа может иметь несколько аргументов командной строки, разделенных пробелами:
Это также работает и с Linux (хотя структура каталогов будет отличаться от структуры каталогов в Windows).
Если вы запускаете свою программу из среды IDE, то ваша IDE должна предоставить способ ввода аргументов командной строки.
Для пользователей Visual Studio: Щелкните правой кнопкой мыши по нужному проекту в меню :
Затем выберите . На правой панели будет строка . Вы сможете здесь ввести аргументы командной строки, и они будут автоматически переданы вашей программе при её запуске:
Пользователям Code::Blocks: Выберите :
Как активировать постоянный запуск с повышенными правами
Система позволяет сделать так, чтобы приложение всегда открывалось с повышенными правами без подтверждения или вызова контекстного меню для выбора способа запуска. Сделать это возможно через свойства софта:
Обратите внимание, что некоторые программы имеют расширенные права по умолчанию. Рядом с иконками таких приложений отображается щита желто-синего цвета
Это значит, что дополнительные манипуляции не требуются.
Для запуска или установки некоторых приложений нужны расширенные права администратора, чтобы напрямую взаимодействовать с системой. По умолчанию большинство приложений не имеют доступа к изменению данных ОС, но существует несколько способов, которые позволяют открыть софт в таком режиме.
Авторизуясь, вы даете согласие на обработку персональных данных.
Запуск программ Windows с прописанными параметрами в ярлыке
Мы каждый день пользуемся различными компьютерными программами для выполнения самых разнообразных задач. Некоторые из них имеют большое количество настроек и возможностей, и чтобы всеми ими воспользоваться, нужно совершать множество манипуляций. Например, вы регулярно используете несколько режимов работы приложения, вводите логин и пароль пользователя, применяете специальные режимы. Помимо офисных работников, в таких возможностях очень часто нуждаются любителей компьютерных игр. Все эти манипуляции могут занимать значительное количество усилий и времени, да и попросту раздражать.
Отражение условий старта приложения в ярлыке упрощает работу с программами.
Стоит отметить, что подобная необходимость, о которой было упомянуто выше, возникает крайне редко, и по большей части решается без усилий самими настройками приложений или игры.
Исходя из этого весь вопрос следует рассматривать лишь как дополнительную возможность по расширенному запуску программного обеспечения, потому что целесообразность подобных действий сомнительна, и времени для пользователя они точно не сэкономят.
Операционная система Windows предоставляет каждому пользователю возможность прописать в ярлыке программы параметры запуска. В рамках рассматриваемого вопроса вместо того чтобы переключаться между пунктами меню, можно один раз создать несколько ярлыков с нужными параметрами, расположить их на рабочем столе или панели задач, а в Windows 8 и 10 и на начальном экране, и запускать программу с нужными параметрами одним нажатием кнопки.
Все эти параметры прописываются в ярлыках, которые представляют собой специальные файлы со ссылкой на исполняемый файл. Вам не нужно каждый раз переходить в папку, в которую установлен софт, и искать файл запуска. В этой статье мы рассмотрим, как существенно расширить ваши возможности при работе с программным обеспечением и узнаем, как прописать параметры запуска в командной строке ярлыка на рабочем столе. Всю процедуру мы разделим на два этапа.
2 способ: указав полный путь к файлу
Если вам нужно запустить любое другое установленное приложение, тогда следует указать полный путь к исполняемому файлу программы.
Например, у меня в папке Загрузки есть программа для установки Киностудии, давайте ее откроем. Захожу в папку и кликаю мышкой по полю, где прописан путь. Всю эту строку нужно прописать в командной строке (поскольку скопировать-вставить там не работает) и в конце дописать название утилиты, которую хотим запустить.
В консоли будет написано:
После нажатия «Enter» началась подготовка к установке Киностудии. Как видите, прописывая путь необязательно использовать большие буквы, можно вводить только маленькие.
Если же в пути к нужному файлу будут пробелы, тогда появится окно с сообщением, что найти указанный файл не получается. Дело в том, что командная строка распознает путь до первого пробела, а не всю введенную вами строку. В примере, она решила, что я хочу открыть c:program .
Теперь немного отойдем от темы, и рассмотрим, как узнать полный путь к той программе, которую мы хотим запустить.
Для этого найдите через окно Проводника исполняемый файл нужного приложения. Чтобы понять, что это он, посмотрите, чтобы напротив него в поле «Тип» было указано «Приложение» . Дальше кликните по полю вверху – это и есть путь.
Например, Тотал Коммандер запускается файлом «totalcmd» , а он находится по пути: «c:program files otal commander» .
Или еще один вариант. Если на рабочем столе есть ярлык нужного приложения, его можно не искать через Проводник. Достаточно кликнуть по нему правой кнопкой и выбрать пункт «Расположение файла» .
Откроется окно, которое мы уже рассмотрели. В нем будет выделен файлик, который запускает утилиту, а вверху можно узнать к ней путь.
Использование аргументов командной строки
Теперь, когда вы знаете, как предоставить программе аргументы командной строки, следующим шагом будет доступ к ним из нашей программы на C++. Для этого мы используем другую форму . Эта новая форма принимает два аргумента (по соглашению названные и ) следующим образом:
Иногда вы также можете увидеть и такое:
Несмотря на то, что они обрабатываются одинаково, мы предпочитаем первое представление, потому что его интуитивно легче понять.
– это целочисленный параметр, содержащий счетчик числа аргументов, переданных программе ( = argument count, число аргументов). всегда будет не меньше 1 потому, что первым аргументом всегда является имя самой программы. Каждый аргумент командной строки, предоставляемый пользователем, приведет к увеличению на 1.
– это место, где хранятся фактические значения аргументов ( = argument values, значения аргументов, хотя на самом деле расшифровывается как «argument vectors»). Хотя объявление выглядит устрашающе, на самом деле представляет собой просто массив строк в стиле C. Длина этого массива – .
Давайте напишем короткую программу с именем MyArgs для вывода значений всех параметров командной строки:
Теперь, когда мы вызываем эту программу (MyArgs) с аргументами командной строки «Myfile.txt» и «100«, вывод будет следующим:
Аргумент 0 – это путь и имя текущей запущенной программы. Аргументы 1 и 2 в данном случае – это два параметра командной строки, которые мы передали.
Параметры командной строки
Си — компилируемый язык. После сборки программа представляет собой исполняемый файл (мы не рассматриваем создание динамических библиотек,
драйверов и т.д.). Наши программы очень простые и не содержат библиотек времени выполнения (Runtime libraries), поэтому могут быть перенесены на компьютер с такой же
операционной системой (и подобной архитектурой) и там запущены.
Программа во время запуска может принимать параметры. Они являются аргументами функции main.
Общий вид функции main следующий
void main(int argc, char **argv) { ... }
Первым аргументом argc является число переданных функции параметров. Второй аргумент – массив строк – собственно сами параметры. Так как параметры у функции могут
быть любыми, то они передаются как строки, и уже сама программа должна их разбирать и приводить к нужному типу.
Первым аргументом (argv) всегда является имя программы. При этом имя выводится в зависимости от того, откуда была запущена программа.
#include <conio.h> #include <stdio.h> void main(int argc, char **argv) { printf("%s", argv); }
Первый аргумент — это имя программы
Теперь научимся немного работать с командной строкой. Это понадобится для того, чтобы передавать аргументы нашей программе.
Сочетание клавиш Win+R вызывает окно «Выполнить». Наберите в нём cmd и вы откроете командную строку. Также можно найти cmd.exe поиском в меню Пуск.
В юникс-подобных операционных системах можно вызвать программу «терминал».
Выполнить
Мы не будем изучать сколько-нибудь много команд. Только те, которые понадобятся в работе.
Для перехода по нужному пишется cd адрес. Например, нужно перейти на windows в папку C:\Windows\System32
В линуксе если нужно перейти в папку /var/mysql
Если путь содержит пробелы, то он пишется в двойных кавычках
Терминал имеет следующие полезные особенности: если нажать стрелку вверх, по появится предыдущая выполненная команда. Если нажать tab, то терминал
попытается дополнить строку до известной ему команды, или дополнить путь, перебирая все папки и файлы в текущей папке.
Наберите
нажимайте tab и смотрите, что происходит.
Ещё одна важная команда dir на windows и ls на linux, выводит на консоль содержимое текущей папки (той папки, в которой вы находитесь в данный момент)
Ваша программа вернула своё полное имя. Перейдите в папку, где располагается ваша программа и посмотрите её содержимое
Переходим в папку, в которой располагается наша программа и смотрим содержимое
Теперь, после того, как мы перешли в нашу папку, можно выполнить нашу программу. Для этого наберите её имя.
Вызов программы из командной строки
Заметьте — имя изменилось. Так как программа вызывается из своей папки, то выводится относительно имя. Теперь изменим программу и сделаем так, чтобы она выводила все
аргументы. которые ей переданы.
#include <conio.h> #include <stdio.h> void main(int argc, char **argv) { int i; for (i = 0; i < argc; i++) { printf("%s\n", argv); } }
Соберите проект. Перед сборкой убедитесь, что программа закрыта. Теперь вызовите программу, передав ей разные аргументы. Для этого напишите имя программы и через пробел аргументы
Передача аргументов программе
Давайте теперь напишем программу, которая получает два аргумента числа и выводит их сумму
#include <conio.h> #include <stdio.h> #include <stdlib.h> void main(int argc, char **argv) { int a, b; if (argc != 3) { printf("Error: found %d arguments. Needs exactly 2", argc-1); exit(1); } a = atoi(argv); b = atoi(argv); printf("%d", a + b); }
Соберём и вызовем
Функция принимает в качестве аргументов два числа
Таким образом работает большинство программ. Кликая на ярлык, вы вызываете программу, на которую он ссылается. Большинство программ также принимают различные аргументы. Например,
можно вызвать браузер firefox из командной строки и передать аргументы
и он сразу же откроет в двух вкладках сайты по указанным адресам.
Многие стандартные команды также имеют параметры. В windows принято, что они начинаются с прямого слеша, в юниксе с минуса или двух минусов. Например
выводит только папки, а в терминале linux
выводит все файлы и папки с указанием атрибутов
Для просмотра дополнительных команд windows наберите в командной строке help или смотрите руководство (его легко найти в интернете). Для линукса команд и их опций гораздо больше, а некоторые из них являются самостоятельными языками программирования, так что стоит выучить хотя бы минимальный набор и их опции.
Q&A
Всё ещё не понятно? – пиши вопросы на ящик
Использование аргументов командной строки
Теперь, когда вы знаете, как передавать аргументы командной строки в программу, следующим шагом будет доступ к ним из программы. Для этого используется уже другая форма функции main(), которая принимает два аргумента ( и ) следующим образом:
int main(int argc, char *argv[])
1 | intmain(intargc,char*argv) |
Также вы можете увидеть и такой вариант:
int main(int argc, char** argv)
1 | intmain(intargc,char**argv) |
Хоть оба эти варианта идентичны по своей сути, но рекомендуется использовать первый, так как он интуитивно понятнее.
(англ. «argument count» = «количество аргументов») — это целочисленный параметр, содержащий количество аргументов, переданных в программу. всегда будет как минимум один, так как первым аргументом всегда является имя самой программы. Каждый аргумент командной строки, который предоставляет пользователь, заставит увеличиться на единицу.
(англ. «argument values» = «значения аргументов») — это место, где хранятся фактические значения аргументов. Хотя объявление выглядит немного пугающе, но это всего лишь массив строк C-style. Длиной этого массива является .
Давайте напишем короткую программу , которая будет выводить значения всех аргументов командной строки:
// Программа MyArguments
#include <iostream>
int main(int argc, char *argv[])
{
std::cout << «There are » << argc << » arguments:\n»;
// Перебираем каждый аргумент и выводим его порядковый номер и значение
for (int count=0; count < argc; ++count)
std::cout << count << » » << argv << ‘\n’;
return 0;
}
1 |
// Программа MyArguments intmain(intargc,char*argv) { std::cout<<«There are «<<argc<<» arguments:\n»; // Перебираем каждый аргумент и выводим его порядковый номер и значение for(intcount=;count<argc;++count) std::cout<<count<<» «<<argvcount<<‘\n’; return; } |
Теперь, при вызове с аргументами командной строки и , вывод будет следующим:
Нулевой параметр — это путь и имя текущей программы. Первый и второй параметры здесь являются аргументами командной строки, которые мы передали.
Работа с числовыми аргументами
Аргументы командной строки всегда передаются в виде строк, даже если предоставленное значение является числовым. Чтобы использовать аргумент командной строки в качестве числа, вы должны преобразовать его из строки в число. К сожалению, C++ делает это немного сложнее, чем должно быть.
В C++ это можно сделать следующим образом:
При запуске с вводом «567» эта программа печатает:
работает так же, как . В этом случае мы инициализируем его значением , и поэтому можем использовать для извлечения значения в целочисленную переменную (так же, как и с ).
Подробнее о мы поговорим в следующей главе.
Синтаксис
Параметры
Параметр | Описание |
---|---|
Указывает имя удаленного сервера, на котором расположена служба. Имя должно использовать формат UNC (например, \мисервер). Чтобы запустить SC.exe локально, не используйте этот параметр. | |
Указывает имя службы, возвращенное операцией жеткэйнаме . | |
Указывает тип службы. Эти способы могут быть следующими:
|
|
Указывает тип запуска для службы. Эти способы могут быть следующими:
|
|
Указывает серьезность ошибки, если служба не запускается при запуске компьютера. Эти способы могут быть следующими:
|
|
Указывает путь к двоичному файлу службы. Значение по умолчанию для BinPath =, и эта строка должна быть указана. | |
Указывает имя группы, членом которой является эта служба. Список групп хранится в реестре в подразделе хклм\систем\куррентконтролсет\контрол\сервицеграупордер . По умолчанию используется значение NULL. | |
Указывает, следует ли получить TagID из вызова CreateService. Теги используются только для драйверов загрузки и запуска системы. | |
Указывает имена служб или групп, которые должны быть запущены перед этой службой. Имена разделяются косой чертой (/). | |
указывает имя учетной записи, в которой будет выполняться служба, или задает имя объекта драйвера Windows, в котором будет выполняться драйвер. Значение по умолчанию — LocalSystem. | |
Указывает описательное имя для идентификации службы в программах пользовательского интерфейса. Например, имя подраздела одной конкретной службы — wuauserv, которое имеет более понятное отображаемое имя автоматическое обновление. | |
Указывает пароль. Это необходимо, если используется учетная запись, отличная от учетной записи LocalSystem. | |
/? | Отображение справки в командной строке. |
Remarks
-
Каждый параметр командной строки (параметр) должен включать знак равенства как часть имени параметра.
-
Между параметром и его значением требуется пробел (например, Type =an). Если пространство не указано, операция завершается ошибкой.
Параметры командной строки с ExecParm
Для начала скачаем программу, для системы нужной разрядности.
Скачем обычный архив, распаковать который можно куда угодно. В нем будет всего три файла – ExecParm.txt, Execparm.dll и Execparm.inf.
А где же исполняемый файл, спросите вы, как установить-то? Очень просто. Достаточно щелкнуть на файле Execparm.inf правой кнопкой мыши и выбрать команду Установить.
В сущности, таким образом в системный реестр просто добавиться несколько записей. Теперь достаточно щелкнуть на исполняемом файле программы правой кнопкой мыши и выбрать команду Execute With Parameters (т.е. запустить с параметрами командной строки).
Осталось указать необходимые параметры и щелкнуть на кнопке ОК. Возможно, это способ понравится кому-то больше, чем первый, более традиционный, вариант.
Сервер 1С:Предприятие на Ubuntu 16.04 и PostgreSQL 9.6, для тех, кто хочет узнать его вкус. Рецепт от Капитана
Если кратко описать мое отношение к Postgres: Использовал до того, как это стало мейнстримом.
Конкретнее: Собирал на нем сервера для компаний среднего размера (до 50 активных пользователей 1С).
На настоящий момент их набирается уже больше, чем пальцев рук пары человек (нормальных, а не фрезеровщиков).
Следуя этой статье вы сможете себе собрать такой же и начать спокойную легальную жизнь, максимально легко сделать первый шаг в мир Linux и Postgres.
А я побороться за 1. Лучший бизнес-кейс (лучший опыт автоматизации предприятия на базе PostgreSQL).
Если, конечно, статья придется вам по вкусу.
2 способ: указав полный путь к файлу
Если вам нужно запустить любое другое установленное приложение, тогда следует указать полный путь к исполняемому файлу программы.
Например, у меня в папке Загрузки есть программа для установки Киностудии, давайте ее откроем. Захожу в папку и кликаю мышкой по полю, где прописан путь. Всю эту строку нужно прописать в командной строке (поскольку скопировать-вставить там не работает) и в конце дописать название утилиты, которую хотим запустить.
В консоли будет написано:
После нажатия «Enter» началась подготовка к установке Киностудии. Как видите, прописывая путь необязательно использовать большие буквы, можно вводить только маленькие.
Теперь немного отойдем от темы, и рассмотрим, как узнать полный путь к той программе, которую мы хотим запустить.
Откроется окно, которое мы уже рассмотрели. В нем будет выделен файлик, который запускает утилиту, а вверху можно узнать к ней путь.
Подведём итоги
Сегодня мы рассмотрели, казалось бы, на первый взгляд, сложную тему. Но теперь вы знаете, что можно очень легко установить или удалить некоторые программы через командную строку с помощью сервиса Chocolatey. А также вы знаете, как открыть или закрыть приложение через тот же терминал. Надеемся, что у вас получилось всё сделать правильно и не осталось никаких вопросов по теме.
Нередко для разнообразных программ приходится указывать специальные параметры командной строки, которые должны активироваться при ее запуске. К примеру, в программе QIP, чтобы не надоедала лишними сервисами, в параметрах необходимо указать ключ “/isolated”. Как это сделать?
Кстати данный ключ в QIP лично я использую всегда – он превращает программу в тот старый добрый QIP, каким он был когда-то, без толпы надоедливых сервисов и всякой дряни. Остается лишь сама “аська”.
Ну да мы отвлеклись. Запустить программу с параметрами командной строки несложно. Для этого нужно сначала создать ее ярлык на рабочем столе либо в панели задач.
Щелкните на значке программы в папке Program Files
либо в спискеВсе программы правой кнопкой мыши и выберите командуОтправить > Рабочий стол (создать ярлык) .
Ярлык появится на рабочем столе. Щелкните на нем правой кнопкой мыши и выберите команду Свойства
. Откроется окно, в котором нас интересует полеОбъект . Именно в нем, после кавычек, и следует дописать нужную нам команду. В данном случае – ключ “/isolated”.
Однако, сей способ кажется мне несколько трудоемким. Создать ярлык, потом прописывать параметры… не проще ли получить возможность сразу запустить любую программу, указав в контекстном меню нужные параметры командной строки? Другими словами, просто щелкнул правой кнопкой мыши на файле, указал нужные параметры и дело в шляпе.
Поможет нам в этом программа ExecParm.