отключить обновление экрана в пакетном файле dos

Я пишу программу на C++, которая запускает команды из операционной системы DOS с помощью команды system(). Пока все хорошо, я думаю. Но как я могу отключить обновление экрана в всплывающем окне консоли, чтобы я не мог видеть тысячи получаемых сообщений.

Или, в качестве альтернативы, как я могу сбросить эти сообщения в какое-то другое место... т.е. есть ли более элегантный способ справиться с этим, чем просто выключение экрана? Благодарю.


person user256261    schedule 22.01.2010    source источник


Ответы (4)


  1. Чтобы предотвратить повторение самих операторов, поместите это в начало скрипта:

    @эхо выключено

  2. Чтобы предотвратить вывод команд, используйте операторы перенаправления. Чтобы отказаться от стандартного вывода и стандартных потоков ошибок:

    Параметры nameofcommand.exe > nul 2>&1

Обратите внимание, что всегда рекомендуется включать обработку ошибок (проверку уровней ошибок и т. д.) в ваши сценарии, особенно если вы отбрасываете все выходные данные, как показано выше.

person Jason Kresowaty    schedule 22.01.2010
comment
Он пишет C++, а не пакетный файл. - person SLaks; 22.01.2010
comment
‹Он пишет на C++› Ой, пропустил часть об использовании командного файла для вызова программы... - person Jason Kresowaty; 22.01.2010

В пакетном файле вы можете перенаправить вывод в файл. Например. echo this goes to a file > log.txt запишет содержимое оператора эха в файл.

См. эту статью о перенаправителях команд.

person i_am_jorf    schedule 22.01.2010

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

person SLaks    schedule 22.01.2010

Я знаю, что это быстро и грязно, но... в качестве альтернативы установите цвет переднего плана окна на тот же цвет, что и фона, чтобы скрыть мелькающие тексты, см. здесь для примера того, как это сделать, это в 7-м сообщении на этой странице, где показан код для этого. Цвет, который вам нужен, это 0x0, черный на черном... таким образом, он выглядит пустым, и никто его не увидит.

Грязный, я знаю ... по общему признанию, ответ SLaks выше был бы более элегантным ...

Надеюсь, это поможет. С уважением, Том.

person t0mm13b    schedule 22.01.2010