Как запустить консольное приложение

Обновлено: 04.07.2024

Консольные приложения работают с так называемыми потоками ввода-вывода. В частном случае эти потоки могут соответствовать вводу данных с клавиатуры и выводу в консольное окно. К примеру, когда первокурсники решают задачи в Делфи, то они пользуются именно таким режимом работы, позволяющим вводить данные задачи и выводить на экран результат решения.

На самом деле операционная система позволяет перенаправлять потоки ввода-вывода в файл или в другое приложение. Воспользуемся программой sum.exe, которая была создана в предыдущей лабораторной работе и посмотрим, как можно не переписывая код самой программы организовать вывод результата в файл. Достаточно ввести такую команду:

sum 5 3 20 50 > output.txt

Результат работы команды окажется в файле «output.txt» текущего каталога, в консольном окне он отображен не будет. Такое действие называется перенаправлением потоков ввода-вывода, в данном случае происходит перенаправление потока вывода в файл.

Надо заметить, что файл «output.txt» буде перезаписан, то есть имеющаяся в нем информация теряется. Для дозаписи вывода консольного приложения в конец файла можно воспользоваться следующей командой:

sum 32 22 7 >> output.txt


Команда type консоли Windows выводит содержимое файла.

Если консольное приложение осуществляет чтение из стандартного потока ввода командами Read и ReadLn, то возможно организовать перенаправление потока ввода из файла. Например, откомпилируем следующее консольное приложение в файл «sum2.exe»:

C, I, A, Sum: Integer;

for I = 1 to C do begin

Программа тоже суммирует числа, но теперь эти числа вводятся с клавиатуры, причем сначала мы указываем количество, а затем сами числа. Для того чтобы исходные данные брались из файла необходимо сделать перенаправление потока ввода, например:

В одной команде можно организовать перенаправление потоков ввода и вывода одновременно, например:

sum2 < input.txt > output.txt


Код возврата

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

Перепишем программу суммирования чисел следующим образом:

for i = 1 to ParamCount do

Процедура Halt прекращает выполнение программы и возвращает переданное ей значение. В приведенном примере в качестве кода возврата выступает сумма чисел.

В командный файлах Windows (.cmd-файлы) код возврата последней выполненной команды может учитываться при выполнении условий IF с параметром ERRORLEVEL. Самостоятельно изучите эту возможность, введя в консоли команду «IF /?». Кроме того, создается специальная переменная %ERRORLEVEL%, которая содержит строковое представление кода возврата выполнения последней консольной команды.

Запустите программу и посмотрите на результат ее работы:


Переменная %ERRORLEVEL% всегда содержит код возврата последней выполненной консольной команды.

При вызове консольного приложения из другой программы код возврата также может быть использован для анализа результатов выполнения приложения.

Запуск консольных приложений из своей программы

Самый простой способ выполнить любую консольную команду – использовать функцию WinExec из модуля Windows. Функция имеет следующий вид: «WinExec (<команда>, SW_SHOWNORMAL)», где <команда> – строка типа PChar, содержащая команду для выполнения. Например, для запуска приложения «sum.exe» с передачей ей параметров можно воспользоваться следующей программой:

WinExec(PChar('sum 2 3 5'), SW_SHOWNORMAL);

Можно заметить, что «OK» будет выведено раньше, чем результат суммирования «10». Дело в том, что запуск программы через WinExec не приводит к ожиданию запустившей программы, она продолжает выполняться параллельно. Таким образом мы только запускаем другую программу, но не можем контролировать ход ее выполнения, в том числе не можем получить код возврата, потому как не ждем ее завершения.

Гораздо большие возможности предоставляет функция CreateProcess из модуля Windows. Для понимания сути ее работы рассмотрим пример программы, запускающей консольное приложение «sum3.exe» и выводящей на экран полученный код возврата:

function CmdExec(const Cmd: string): Integer;

// Выполнение консольного приложения с ожиданием его завершения и возвратом кода возврата

FillChar(StartUpInfo, SizeOf(TStartUpInfo), 0); // заполнение структуры нулями

with StartUpInfo do

dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;

False, // флаг наследования текущего процесса

NORMAL_PRIORITY_CLASS, // флаги способов создания процесса

nil, // текущий диск и каталог

StartUpInfo, // структура STARTUPINFO

ProcessInfo // структура PROCESS_INFORMATION

if Rlst then begin // если запуск прошел успешно

with ProcessInfo do begin

WaitForInputIdle(hProcess, INFINITE); // ждем завершения инициализации

WaitForSingleObject(ProcessInfo.hProcess, INFINITE); // ждем завершения процесса

GetExitCodeProcess(ProcessInfo.hProcess, ExitCode); // получаем код завершения

CloseHandle(hThread); // закрываем дескриптор процесса

CloseHandle(hProcess); // закрываем дескриптор потока

end else begin // ошибка выполнения команды

WriteLn('Error: ', GetLastError, ' > ', Cmd);

Result := Integer(ExitCode); // возвращаем код возврата с приведением к типу Integer

S := CmdExec('sum3 10 15 4 3');

Если все верно, то должен получиться ответ: 32.

Для упрощения мы разработали функцию CmdExec, позволяющую запустить консольное приложение с ожиданием завершения ее работы и возвратом кода возврата. Таким образом, запуск консольных приложений становится не сложнее вызова WinExec.

При работе с командной строкой и написании командных файлов часто возникает необходимость в запуске других программ. В данной статье мы рассмотрим несколько способов, как можно запускать программы через командную строку в операционных системах Windows 10 и Windows 7.

Запуск по названию исполняемого файла

Многие программы в командной строке можно запускать просто указав название их исполняемого файла. Например, вы можете ввести в командную строку « notepad » и запустить программу « Блокнот » или ввести « mspaint » и запустить « Paint ».

Запуск по названию исполняемого файла

Это работает благодаря переменной окружения « PATH » в которой записан список папок, где Windows должна искать исполняемые файлы для программ. Список этих папок можно просмотреть, если ввести в командную строку команду « path ».

ввести в командную строку path

Если вы хотите запустить программу из другой папки, которая не указана в переменной « PATH », то вы можете временно изменить папку для поиска исполняемых файлов. Для этого нужно ввести команду « path » и через пробел указать путь к нужной папке. Например, мы можем указать путь к папке с программой AkelPad:

И потом запустить эту программу выполнив команду «akelpad»:

ввести команду path и через пробел указать путь

Нужно отметить, что команда «path» влияет только на текущий сеанс командной строки, при этом значение переменной « PATH » не меняется.

Запуск с указанием полного пути

Еще один способ запуска программ – это указание полного пути к исполняемому exe-файлу. Для этого достаточно вставить в командную строку полный путь и указанная программа будет запущена.

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

Запуск с указанием полного пути

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

Запуск с помощью команды «start»

Также для запуска других программ можно использовать команду «s tart ». С ее помощью можно запускать как программы для командной строки, так и приложения с графическим интерфейсом.

Для запуска программ данным способом нужно ввести команду « start » и через пробел указать название программы. Например, для того чтобы запустить текстовый редактор «Блокнот» нужно выполнить следующее:

Как и в предыдущем случае, Windows будет искать исполняемый файл в папках, которые указаны в переменной окружения « PATH ».

Запуск с помощью команды start

Но, команда « start » позволяет и вручную указать путь к папке с программой. Для этого нужно использовать параметр « /D ».

Например, для того чтобы запустить программу « akelpad » из папки « C:\Program Files (x86)\AkelPad » нужно выполнить следующее:

команда start и с указанием пути

Одной из особенностей команды «s tart » является то, что она позволяет запускать программы с высоким приоритетом.

При наличии навыка управлять консольным приложением можно эффективнее, чем графическим. Такие приложения существуют для всех распространенных операционных систем, включая Linux и Windows.

Как запустить консольное приложение

  • Как запустить консольное приложение
  • Как запускать программу из командной строки
  • Как создать консоль

Запустить консольное приложение в Linux можно в обычном и полноэкранном режиме. В первом случае для этого потребуется запустить эмулятор консоли. Для этого нажмите на кнопку вызова меню, которая в KDE выглядит как шестерня, в Gnome - как ладонь, а в других графических интерфейсах может иметь иной вид. В меню найдите приложение xterm, nxterm, Konsole или аналогичное. На экране появится эмулятор консоли с командной строкой. Если вы желаете запустить программу не от своего имени, а от имени другого пользователя, введите login, после чего наберите имя и пароль. Чтобы снова получить возможность запускать программы от своего имени, введите logout.

Для перехода в полноэкранную консоль нажмите Ctrl+Alt+F2. Введите логин и пароль, и появится командная строка. Вернуться обратно в графический режим можно, нажав Alt+F5 либо Alt+F7 (в зависимости от дистрибутива).

В Windows для запуска командной строки нажмите кнопку Пуск, найдите в меню пункт Выполнить и введите имя исполняемого файла - cmd. Откроется окно с командной строкой. Нажатием сочетания клавиш Ctrl+Enter можно переключаться между обычным и полноэкранным режимом.

Чтобы запустить программу, лежащую в любой папке, к которой прописан путь для запуска из остальных папок, просто введите ее имя. Если путь к папке с программой не прописан, введите его полностью, например:/usr/bin/komandac:Program%20Filesprogrammakomanda.exe

Для перехода в другую папку введите команду cd, указав через пробел полный путь к этой папке. Чтобы запустить программу из текущей папке, в Linux введите:./komandaВ Windows введите:komanda.exe

Большое удобство обеспечивают консольные менеджеры файлов: в Linux - Midnight Commander, в Windows - Far. В такой программе подведите указатель кнопками со стрелками к папке и нажмите Enter, чтобы перейти в нее. Для запуска файла подведите указатель к нему и также нажмите Enter.

Если это приложение, зависящее от фреймворка (по умолчанию), вы запускаете его dotnet yourapp.dll .

Если это автономное приложение, вы запускаете его yourapp.exe в Windows и ./yourapp Unix.

@GlenThomas Если вы хотите запустить разрабатываемое приложение, вы используете dotnet run . Кроме того, где вы смотрели? Где вы ожидаете эту информацию? @GlenThomas Это не так, dotnet run работает для новых проектов csproj так же, как и для project.json. @GlenThomas, не уверен, что это ваша проблема, но когда вы пытаетесь ее использовать dotnet run , убедитесь, что вы находитесь в каталоге проекта, а не в каталоге решения.

Вы можете очень легко создать EXE (для Windows) без использования каких-либо загадочных команд сборки. Вы можете сделать это прямо в Visual Studio.

Консольное приложение Публикация

Ага. Там есть EXE - вместе с 217 другими файлами (api-ms-win-core-namedpipe-l1-1-0.dll и т. Д.). Есть ли способ связать это в один EXE-файл? Хороший вопрос @ Элтон. Я не знаю. AFAIK вы должны развернуть все библиотеки. Я думаю, что тот факт, что он настроен как автономный, потребует наличия всех этих библиотек DLL. Если они вам не нужны, режим развертывания, вероятно, должен быть зависимым от

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

Предположим, у вас есть простое консольное приложение с именем MyTestConsoleApp. Откройте консоль диспетчера пакетов и выполните следующую команду:

-c флаг означает, что вы хотите использовать конфигурацию отладки (в другом случае вы должны использовать значение Release) - r флаг означает, что ваше приложение будет работать на платформе Windows с архитектурой x64.

Когда процедура публикации будет завершена, вы увидите файл * .exe, расположенный в каталоге bin / Debug / publish.

Теперь вы можете вызвать его с помощью инструментов командной строки. Поэтому откройте окно CMD (или терминал), перейдите в каталог, где находится ваш файл * .exe, и напишите следующую команду:

С помощью dotnetcore3.0 вы можете упаковать все решение в один исполняемый файл, используя PublishSingleFile свойство

Пример Self Contained , Release OSX исполняемого файла:

Пример Self Contained , Debug Linux 64bit исполняемым:

Сборка Linux не зависит от дистрибутива, и я обнаружил, что они работают на Ubuntu 18.10, CentOS 7.7 и Amazon Linux 2.

Автономный исполняемый файл включает Dotnet Runtime, и Runtime не требует установки на целевой машине. Опубликованные исполняемые файлы сохраняются в:

<ProjectDir>/bin/<Release or Debug>/netcoreapp3.0/<target-os>/publish/ в Linux, OSX и

<ProjectDir>\bin\<Release or Debug>\netcoreapp3.0\<target-os>\publish\ на винде.

Вы также можете добавить конфигурацию в файл csproj: <PublishSingleFile>true</PublishSingleFile>

Чтобы запустить консольный проект с помощью командной строки Windows, выберите конкретный путь из своего каталога и введите следующую команду

Читайте также: