我正在使用msbuild"Exec"任务运行命令.但是我不希望命令生成的stdio输出出现在控制台中,无论如何都要压制它吗?
也许使用Exec任务用我的命令exe调用"cmd.exe"是一个目标,然后使用">"将输出重定向到其他地方.(但是我无法让这个解决方案起作用).
即
<Exec Command="cmd.exe sqlplus.exe $(someCommandSpecificSettings) < test.txt"/>
Run Code Online (Sandbox Code Playgroud)
有什么建议让我的榜样上班或替代?
仅供参考:
>)将输出重定向到您指定的文件(如果需要,覆盖)使用您的代码,您可以创建(一次)并在每次test.txt文件时替换.您可以使用NUL而不是使用文件名,这意味着重定向到无处.这不会创建文件(在某些情况下可能会很大):
<Exec Command="cmd.exe /c sqlplus.exe $(someCommandSpecificSettings) > NUL"/>
Run Code Online (Sandbox Code Playgroud)
如果你想重定向错误,你可以使用2> like:
<Exec Command="cmd.exe /c sqlplus.exe $(someCommandSpecificSettings) > NUL 2>errors.txt"/>
Run Code Online (Sandbox Code Playgroud)
另请注意,您可以使用2>&1 >将stderr重定向到stdout,从而将所有内容重定向到无处.
希望这能澄清你的想法^^
抑制Exec任务或任何继承自ToolTask 的任务的标准输出和标准错误输出的最佳方法是降低输出的重要性。这样,如果您正在调试构建,这些输出不会完全隐藏,因为您将它们重定向到 nul。
<Exec Command="sqlplus.exe" StandardOutputImportance="low" StandardErrorImportance="low"/>
Run Code Online (Sandbox Code Playgroud)
好吧,想通了... cmd.exe 需要一个 /c 参数才能满足我的需求,即:
另外,它应该>代替<
<Exec Command="cmd.exe /c sqlplus.exe $(someCommandSpecificSettings) > test.txt"/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3682 次 |
| 最近记录: |