1

我正在尝试将 jsmin 与 nant 一起使用 - 它只使用 stdin 和 stdout 进行输入和输出。nant 'exec' 任务允许您将输出重定向到文件,但不能从文件中获取输入。

我曾尝试使用“命令行”使用“>”和“<”来指导输入和输出,但 nant 只是消失了并且不会回来:(

我不敢相信以前没有人尝试过这样做。请帮忙!:)

4

3 回答 3

2

来自http://www.mail-archive.com/nant-developers@lists.sourceforge.net/msg04575.html。你应该能够做类似的事情:

        <exec program="cmd.exe" workingdir=".">
                <arg value="/c cacls" />
                <arg value="${mdb.file}" />
                <arg value="/E" />
                <arg value="/G testpc\aspnet:F" />
                <arg value="&lt; y.txt" />
        </exec>
于 2009-07-14T17:05:41.850 回答
0

重定向和管道运算符是 shell 的一个特性,C 和 C# 支持通过其他方式(文件句柄)进行重定向。我在某处读到,因为 C# Process 类不支持输入重定向,nant 只为<exec>.

要重定向命令输入,我们可以求助于 shell:

A) 调用如上面 acloutiercmd.exe/c示例所示。必须注意空格!实际上,由于<and之间的空间,示例失败y.txt,删除它以使示例工作。您也可以在value属性中转换属性,line但是您必须小心引用。

B)由于我无法使用 exec-cmd 方法使管道工作,因此我正在使用以下方法动态生成批处理文件<echo>

<echo file="${WD}/login.bat">"${P4}" diff -sd | "${P4}" -x- sync -f using</echo>        
<exec program="login.bat" basedir="${WD}" workingdir="${P4.WorkspaceRoot}" />
于 2012-10-13T20:33:54.673 回答
0

我相信 NAnt 确实支持来自文件的输入。由于构建文件是 XML,因此您必须使用 xml 编码的“<”。

<exec program="somefile.exe" workingdir=".">
  <arg value="&lt; input.txt" />
</exec>
于 2009-07-13T18:14:00.033 回答