2010-12-07 3 views
2

Я запускаю команду, используя задачу msbuild «Exec». Однако я не хочу, чтобы вывод stdio, сгенерированный из команды, появлялся в консоли, есть ли способ подавить его?Подавление вывода с задачей Exec в msbuild

Возможно, что-то вроде использования задачи Exec для вызова «cmd.exe» с моей командой exe является целью, а затем с помощью «>» перенаправить вывод где-то в другом месте. (Однако я не могу заставить это решение работать).

т.е.

<Exec Command="cmd.exe sqlplus.exe $(someCommandSpecificSettings) &lt; test.txt"/> 

Любые предложения, чтобы получить мой пример для работы или альтернативы?

ответ

1

Ок, понял это ... cmd.exe требовался/с аргументом, чтобы работать на то, что я хотел, а именно:

Кроме того, он должен быть &gt; вместо &lt;

<Exec Command="cmd.exe /c sqlplus.exe $(someCommandSpecificSettings) &gt; test.txt"/> 
0

Попробуйте это:

<Exec Command="cmd.exe sqlplus.exe $(someCommandSpecificSettings) &lt; test.txt >nul"/> 
+0

Нет, не работает. Я до сих пор получаю сообщение «Система не может найти указанный файл». – vicsz 2010-12-07 20:15:18

+0

Это сообщение сообщает вам, что не может найти «test.txt» для чтения как входной, так как вы получили `& lt` wrong. – 2010-12-08 14:32:16

7

Просто для информации:

  • > (&gt;) перенаправить вывод в файл, указанный после (перезаписаны при необходимости)
  • >> добавить вывод в файл, указанный после (не перезаписываются)
  • < перенаправлять стандартный ввод в вашей команде (в основном передайте содержимое файла после вашей команды)

С кодом вы создаете (один раз) и каждый раз заменяете файл test.txt. Вместо использования имени файла вы можете использовать NUL, что означает перенаправление в никуда. Это не создаст файл (который может быть огромным в некоторых случаях):

<Exec Command="cmd.exe /c sqlplus.exe $(someCommandSpecificSettings) &gt; NUL"/> 

Если вы хотите перенаправить ошибки, а также, можно использовать 2> как:

<Exec Command="cmd.exe /c sqlplus.exe $(someCommandSpecificSettings) &gt; NUL 2$gt;errors.txt"/> 

Заметим также, что вы может перенаправить stderr на stdout, используя 2> & 1, таким образом > NUL 2>&1 перенаправит все в никуда.

Надеется, что это проясняет ум ^^

0

Лучшего способ подавления стандартного вывода и стандартный вывода ошибок из Exec задач или какой-либо задачи, который наследуется от ToolTask является снижение значения выходного сигнала. Таким образом, если вы отлаживаете свою сборку, этот вывод не будет полностью скрыт, потому что вы перенаправляете их на nul.

<Exec Command="sqlplus.exe" StandardOutputImportance="low" StandardErrorImportance="low"/> 
Смежные вопросы