从bash运行windows命令,输出到标准输出?

时间:2010-03-30 10:02:39

标签: windows powershell cygwin mingw cmd

伙计们,我正在使用git bisect运行等git工具,需要调用命令来构建和测试我的项目。我的命令是nant,这是一个Windows程序。或者是一个调用nant。

的build.cmd脚本

很容易让bash调用nant构建来运行。

但困难的部分是如何将标准输出写入文件?

我甚至安装了Windows PowerShell来尝试从bash运行命令。

同样,它可以工作,但标准输出填充说“权限被拒绝”时 我试着在构建过程中阅读它。

更新

运行nant时,将使用整个路径。它安装并运行良好。问题是如何从bash运行时获得标准输出。

如果在行结束时使用“> build.out”从Windows提示符运行nant,您将获得标准输出。但同样在bash下也不会起作用。它只是说build.out被锁定,权限被拒绝。

更新

如下所述使用T恤也无法解决问题。在这种情况下,文件仍会报告“访问被拒绝”,并且在构建运行时会尝试读取它。而且,发球台程序从不向标准输出写任何东西。

2 个答案:

答案 0 :(得分:1)

(如果我正确理解你的问题......)

您可以使用'tee'命令将输出拆分为文件和标准输出。行echo I am building something | tee build.out将在控制台上打印输出并将其保存到名为“build.out”的文件中。

tee命令通常在Cygwin中可用,并且显然也在msysgit安装的Bash shell中(我刚刚测试过它)。这是一个good reference page以获取更多详细信息。

答案 1 :(得分:0)

好的,终于解决了这个问题。事实证明,nant构建脚本使用git功能擦除所有被忽略的文件以进行清理。那就是删除build.out文件会导致这些奇怪的问题。现在,该进程将build.out文件写入父目录,以便它不会被删除,现在一切都按预期顺利进行。