我正在尝试将 jsmin 与 nant 一起使用 - 它只使用 stdin 和 stdout 进行输入和输出。nant 'exec' 任务允许您将输出重定向到文件,但不能从文件中获取输入。
我曾尝试使用“命令行”使用“>”和“<”来指导输入和输出,但 nant 只是消失了并且不会回来:(
我不敢相信以前没有人尝试过这样做。请帮忙!:)
来自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="< y.txt" />
</exec>
重定向和管道运算符是 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}" />
我相信 NAnt 确实支持来自文件的输入。由于构建文件是 XML,因此您必须使用 xml 编码的“<”。
<exec program="somefile.exe" workingdir=".">
<arg value="< input.txt" />
</exec>