NAnt exec 不适用于标准输入重定向?

发布于 2024-07-27 22:54:54 字数 205 浏览 5 评论 0原文

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

我尝试过使用“>”的“命令行” 和“<” 来引导输入和输出,但 nant 就消失了并且不会回来:(

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

I'm trying to use jsmin with nant - and it just uses stdin and stdout for input and output. The nant 'exec' task allows you to redirect the output to a file, but not get the input from a file.

I have tried with a 'commandline' using '>' and '<' to direct the input and output, but nant just goes away and doesn't come back :(

I can't believe no-one's tried to do this before. Please help! :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

離人涙 2024-08-03 22:54:54

来自 http://www.mail-archive.com /[电子邮件受保护]/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>

From http://www.mail-archive.com/[email protected]/msg04575.html. You should be able to do something similar to:

        <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>
素食主义者 2024-08-03 22:54:54

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

<exec program="somefile.exe" workingdir=".">
  <arg value="< input.txt" />
</exec>

I believe NAnt does support input from a file. Since the build file is XML you must use the xml encoded "<".

<exec program="somefile.exe" workingdir=".">
  <arg value="< input.txt" />
</exec>
薄荷梦 2024-08-03 22:54:54

重定向和管道运算符是 shell 的一项功能,C 和 C# 支持通过其他方式(文件句柄)进行重定向。 我在某处读到,由于 C# Process 类不支持输入重定向,nant 仅为 提供输出重定向。

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

A) 使用 /c 调用 cmd.exe,如上面 acloutier 的示例所示。 必须小心空格! 实际上,该示例由于 <y.txt 之间存在空格而失败,请将其删除以使示例正常运行。 您还可以在 line 属性中转换 value 属性,但在引用时必须小心。

B) 由于我无法使用 exec-cmd 方法使管道正常工作,因此我使用 动态生成批处理文件:

<echo file="${WD}/login.bat">"${P4}" diff -sd | "${P4}" -x- sync -f using</echo>        
<exec program="login.bat" basedir="${WD}" workingdir="${P4.WorkspaceRoot}" />

The redirect and pipe operators are an feature of the shell, C and C# support redirection by other means (file handles). Somewhere I read that because the C# Process class did not support input redirection, nant provides only output redirection for <exec>.

To redirect command input we can resort to the shell:

A) Invoking cmd.exe with /c as shown in the example of acloutier above. Care must be taken with whitespaces! Actually the example fails due to the space between < and y.txt, remove it to make the example work. You can can also convert the value attribute in a line attribute but then you have to be careful with quoting.

B) Since I could not get pipes to work using the exec-cmd approach, instead I am generating a batch-file on the fly using <echo>:

<echo file="${WD}/login.bat">"${P4}" diff -sd | "${P4}" -x- sync -f using</echo>        
<exec program="login.bat" basedir="${WD}" workingdir="${P4.WorkspaceRoot}" />
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文