отключить обновление экрана в пакетном файле dos - PullRequest
3 голосов
/ 22 января 2010

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

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

Ответы [ 4 ]

1 голос
/ 22 января 2010

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

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

1 голос
/ 22 января 2010

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

1 голос
/ 22 января 2010
  1. Чтобы предотвратить отображение самих операторов, поместите это в верхнюю часть скрипта:

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

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

    nameofcommand.exe params> nul 2> & 1

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

0 голосов
/ 22 января 2010

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

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

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

...