Это, вероятно, вопрос о запуске, поскольку, несомненно, ответ ослепительно очевиден.
Я использовал Visual Studio в течение многих лет, но это первый раз, когда я создал любую консольную программу.
Когда я запускаю приложение, появляется окно консоли, появляется выход программы, а затем окно закрывается по мере выхода приложения.
Есть ли способ открыть его, пока я не проверил вывод или не просмотрел результаты после закрытия окна?
ОТВЕТЫ
Ответ 1
Если вы запускаете без отладки (Ctrl + F5), то по умолчанию он предлагает вам нажать return, чтобы закрыть окно. Если вы хотите использовать отладчик, вы должны поставить точку останова в последней строке.
Ответ 2
Щелкните правой кнопкой мыши на вашем проекте
Свойства> Свойства конфигурации> Линкер> Система
Выберите Console (/SUBSYSTEM: CONSOLE) в опции SubSystem или вы можете просто ввести Console в текстовое поле!
Теперь попробуйте. это должно работать
Командная строка закрывается после выполнения команды (Решение)
Ответ 3
Вот способ для C/С++:
#include #ifdef _WIN32 #define WINPAUSE system(«pause») #endif
Поместите это вверху вашей программы, и ЕСЛИ он находится в системе Windows ( #ifdef _WIN32 ), тогда он создаст макрос с именем WINPAUSE . Всякий раз, когда вы хотите, чтобы ваша программа приостанавливалась, вызовите WINPAUSE; , и она приостанавливает программу, используя команду DOS. Для других систем, таких как Unix/Linux, консоль не должна выходить из выхода программы в любом случае.
Ответ 4
Откройте меню отладки- > Нажмите Начать без использования
Ответ 5
Если вы используете .NET, поместите Console.ReadLine() до конца программы.
Ответ 6
попробуйте вызвать getchar() прямо перед возвратом main() .
Ответ 7
(/SUBSYSTEM: CONSOLE) не работал для моего vs2013 (у меня его уже было).
«run without debugging» не является параметром, так как я не хочу переключаться между отладкой и просмотром вывода.
int main() < . #if _DEBUG LOG_INFO(«end, press key to close»); getchar(); #endif // _DEBUG return 0; >
Решение, используемое в qtcreator до 2.6. Теперь, когда qt растет, vs идет другим путем. Насколько я помню, в vs2008 нам не нужны такие трюки.
Ответ 8
Здесь решение, что (1) не требует каких-либо изменений кода или точек останова, и (2) приостанавливается после завершения программы, чтобы вы могли видеть все, что было напечатано. Он остановится после F5 или Ctrl + F5. Основной недостаток заключается в том, что на VS2013 Express (как проверено) он не загружает символы, поэтому отладка очень ограничена.
-
Создайте командный файл. Я назвал мой runthenpause.bat со следующим содержимым:
%1 %2 %3 %4 %5 %6 %7 %8 %9 pause
Теперь, когда вы запустите, runthenpause.bat запустит ваше приложение, и после того, как ваше приложение завершится, вы остановитесь, чтобы увидеть вывод консоли.
Я опубликую обновление, если выясню, как загрузить символы. Я пробовал /Z7 за этот, но безуспешно.
C++ закрывается консоль. Что делать? Задержка экрана консоли. Урок #21.
Ответ 9
просто введите свою последнюю строку кода:
system(«pause»);
Ответ 10
Начиная с Visual Studio 2017 (15.9.4) есть опция:
Tools->Options->Debugging->Automatically close the console
Автоматически закрывать консоль, когда отладка прекращается:
Сообщает Visual Studio закрыть консоль в конце сеанса отладки.
Ответ 11
Вы можете запустить исполняемый файл из командной строки. Таким образом, вы можете увидеть весь вывод. Или вы можете сделать что-то вроде этого:
int a = 0; scanf(«%d», return YOUR_MAIN_CODE;
и таким образом окно не будет закрываться, пока вы не введете данные для переменной a .
Ответ 12
добавить «| pause» в поле аргументов команды в разделе отладки в свойствах проекта.
Ответ 13
Просто нажмите CNTRL + F5, чтобы открыть его во внешнем окне командной строки (Visual Studio не контролирует его).
Если это не сработает, добавьте следующее в конец вашего кода:
Console.WriteLine(«Press any key to exit. «); Console.ReadKey();
Подождите, пока вы нажмете клавишу, чтобы закрыть окно терминала, как только код достигнет конца.
Если вы хотите сделать это в нескольких местах, поместите вышеуказанный код в метод (например, private void Pause() ) и вызовите Pause() всякий раз, когда программа достигает возможного конца.
Ответ 14
Несколько лучшее решение:
atexit([] < system(«PAUSE»); >);
в начале вашей программы.
- может использовать std:: exit()
- может иметь несколько возвратов из основного
- вы можете запустить свою программу под отладчиком
- Независимый IDE (+ независимый от ОС, если вы используете трюк cin.sync(); cin.ignore(); вместо system(«pause»); )
- необходимо изменить код
- не будет останавливаться на std:: terminate()
- все равно произойдет в вашей программе вне сеанса IDE/debugger; вы можете предотвратить это под Windows, используя:
extern «C» int __stdcall IsDebuggerPresent(void); int main(int argc, char** argv) < if (IsDebuggerPresent()) atexit([] ); . >
Ответ 15
- system(«pause»);
Обязательно сделайте любой из них в конце функции main() и перед оператором return .
Ответ 16
В моем случае я испытал это, когда создал проект Empty C++ в версии VS 2017 для сообщества. Вам нужно будет установить для подсистемы значение «Консоль (/SUBSYSTEM: CONSOLE)» в разделе «Свойства конфигурации».
- Зайдите в «Просмотр», затем выберите «Менеджер недвижимости»
- Щелкните правой кнопкой мыши на проекте/решении и выберите «Свойство». Откроется страница свойств теста.
- Перейдите к компоновщику, затем выберите «Система»
- Нажмите «Подсистема» и появится выпадающий
- Выберите «Консоль (/SUBSYSTEM: CONSOLE)»
- Применить и сохранить
- В следующий раз, когда вы запустите свой код с помощью «CTRL +F5», вы должны увидеть результат.
Ответ 17
Вы также можете использовать эту опцию
#include /* run this program using the console pauser or add your own getch, system(«pause») or input loop */ int main()
Ответ 18
Используйте Console.ReadLine() в конце программы. Это будет держать окно открытым, пока вы не нажмете клавишу Enter . Подробнее см. Https://docs.microsoft.com/en-us/dotnet/api/system.console.readline.
Ответ 19
Visual Studio 2015, импорт. Потому что я ненавижу когда примеры кода не дают необходимых импортов.
#include ; int main()
Источник: ask-dev.ru
Как предотвратить автоматическое закрытие консоли после выполнения командного файла
Может ли кто-нибудь сказать мне, какую команду поставить в конце пакетного файла, чтобы предотвратить автоматическое закрытие консоли после выполнения файла?
joe 12 июнь 2009, в 19:06
Поделиться
Было бы хорошо, если бы был способ определить, был ли файл .cmd запущен двойным щелчком в проводнике (тогда вы хотите, чтобы он сделал паузу в конце), или если он был запущен уже открытой командной строкой. В последнем случае (и особенно если он выполняется другой программой) вам не нужна пауза. Я не нашел хорошего решения для этого случая (и обычно использую переменную if% NOPAUSE%, но это работает только для родительских программ, а не для оболочек paremt).
eckes 06 нояб. 2012, в 17:34
Есть способ: stackoverflow.com/questions/3551888/…
EM0 17 май 2017, в 09:57
Поделиться:
command-line
14 ответов
Лучший ответ
В пакетных файлах Windows/DOS:
pause
Это печатает приятное сообщение «Press any key to continue . . . «
Или, если вы не хотите сообщение «Press any key to continue . . .» , сделайте это вместо этого:
pause >nul
Dave Bauman 12 июнь 2009, в 20:54
Поделиться
Ни одно из предложенных здесь предложений не работает для меня, если дважды щелкнуть файл bat. Это серверная среда (и я должен запустить скрипт в ней), чтобы они могли изменить поведение. Это не меняет мою цель.
Чтобы командное окно оставалось открытым, я могу выводить сообщение об ошибке.
Henrik Erlandsson 28 окт. 2016, в 07:28
Да, это не всегда работает в зависимости от окружающей среды. Для более надежного решения см. Мой ответ ниже. По сути, просто сделайте set / p exitkey = «Нажмите любую клавишу, чтобы продолжить . «
Steven Mark Ford 29 сен. 2017, в 04:08
Зависит от точного вопроса!
Обычно pause выполняет задание в файле .bat.
Если вы хотите, чтобы cmd.exe не закрывался, чтобы продолжать печатать, используйте команду cmd /k в конце файла.
Rutger Nijlunsing 12 июнь 2009, в 19:40
Поделиться
Это работает, когда пауза нет.
Phillip 14 март 2013, в 17:55
Если вы запускаете команды Windows через диалоговое окно «Выполнить», вместо этого введите cmd /k перед вашей командой. title» call abcd.exe param1 param2 start «title» call xyz.exe param1 param2
user6928445 05 окт. 2016, в 20:26
Поделиться
В моем случае у меня была какая-то ошибка во время выполнения команды терминала, и поэтому команды ‘pause’ и ‘cmd / k’ не помогли мне остановить программу из-за ошибки. Этот пример помог мне показать, у меня есть ошибка, а также остановился совсем из терминала.
Спасибо!
HowDoYouTellForAChild 08 окт. 2018, в 12:03
Вызвать cmd в конце командного файла.
user4155296 17 окт. 2014, в 21:53
Поделиться
мой способ — написать фактическую партию (говоря «foo.bat» ), чтобы закончить работу; затем создайте еще один «start.bat»:
Я считаю, что это очень полезно, когда я устанавливаю одноразовые переменные среды.
Erich Chen 04 янв. 2017, в 10:04
Поделиться
Вы можете просто поместить cmd /k (без какой-либо команды) в конец файла foo.bat и запустить его. Вам не нужен отдельный файл start.bat .
ADTC 16 окт. 2017, в 00:13
set /p=
. Он будет ожидать ввода пользователем и высвободит поток при нажатии клавиши.
runas /user:# «» >nul 2>Press any key to continue. »
NB: пространство после ‘=’ очень важно
Steven Mark Ford 29 сен. 2017, в 05:52
Поделиться
Легко, добавьте cmd в свою последнюю строку летучей мыши, НО! если вы reset или очистите свой системный путь, вы должны запустить свой cmd с полным путем, например:
%windir%system32cmd.exe
Например, у меня есть файл bat для reset jdk для старой версии, например:
PATH=C:Program FilesJavajdk1.6.0_45bin;C:apache-ant-1.7.1bin SET JAVA_HOME=C:Program FilesJavajdk1.6.0_45 %windir%system32cmd.exe
так как я reset системный путь, я должен запустить cmd с полным путем или система не сможет найти cmd.exe, он не сможет запустить cmd и просто закроет окно, t см. сообщение об ошибке.
Wei Kleeff 04 сен. 2017, в 04:17
Поделиться
Есть два способа сделать это зависит от варианта использования
1) Если вы хотите, чтобы приглашение Windows cmd оставалось открытым, чтобы вы могли увидеть результат выполнения и закрыть его впоследствии; использовать
2), если вы хотите, чтобы приглашение Windows cmd оставалось открытым и позволяло выполнять некоторые последующие команды; использовать
Hitesh Sahu 02 сен. 2017, в 10:19
Поделиться
Я знаю, что опаздываю, но мой предпочтительный способ:
:programend pause>nul GOTO programend
Таким образом, пользователь не может выйти с помощью ввода.
decadenza 05 июнь 2017, в 15:07
Поделиться
Я думаю, да, поскольку это улучшенный способ предотвращения закрытия консоли. Даже если пользователь нажимает клавишу, консоль остается открытой. Пользователь будет вынужден выйти, только закрыв окно консоли.
decadenza 11 нояб. 2018, в 19:22
Возможность 1: Просто создайте 2 файла .bat и напишите в первую:
start // name of 2nd batch file exit
Пакетный файл 2 — это файл, который не закрывается в конце. Итак, теперь, когда вы открываете партию № 1, она начнет 2-й и сам гной. Когда второй заканчивается, он не будет полностью закрываться (до тех пор, пока вы не положите выход в конце)
Возможность 2: Пакетный файл 1:
call cls echo End of file pause
Когда второй файл заканчивается, он снова переходит к файлу 1 и выводит оставшуюся часть. С этим вы даже можете сделать обработчики ошибок. Если nr.1 сбой, он переходит в nr.2 и отображает его
Источник: overcoder.net
Автоматическое закрытие консоли
Чтобы консоль автоматически закрывалсь при остановке отладки, нужно в Visual Studio включите параметр Автоматически закрыть консоль при остановке отладки.
Находится он: Средства — Параметры — Отладка — Общие
Amney
Чтобы консоль автоматически закрывалсь при остановке отладки, нужно в Visual Studio включите параметр Автоматически закрыть консоль при остановке отладки.
Находится он: Средства — Параметры — Отладка — Общие
Это типо если отладка норм прошла, без паники, то она закроется, а если там проблемы какие — то с отладкой, то консоль не закроется?)
Источник: tehadm.ru