代码之家  ›  专栏  ›  技术社区  ›  schnaader

ApacheAnt命令行参数没有双引号-可能吗?

  •  0
  • schnaader  · 技术社区  · 15 年前

    今天我不得不向ApacheAnt文件添加一个任务。命令行应该是这样的

    myprogram --param1 --param2 path\somefile 2> path\logfile
    

    问题是,如果我用下面这样的方法

    <exec executable="$(myprogram)"
      <arg value="--param1">
      <arg value="--param2">
      <arg path="$(somefile)">
      <arg value="2>">
      <arg path="$(logfile)">
    </exec>
    

    myprogram "--param1" "--param2" "path\somefile" "2>" "path\logfile"
    

    如果您的文件/路径中有空格,但会破坏到日志文件的管道(相反,程序认为还有两个额外的文件参数“2>”,那么这并不坏,尤其好和“路径\日志文件”)。

    我通过调用一个只想将文件作为参数的批处理脚本来解决这个问题,但我想知道:如果没有这样的解决方法,是否有可能做到这一点?

    4 回复  |  直到 15 年前
        1
  •  2
  •   martin clayton egrunin    14 年前

    运行“myprogram--param1--param2 path\somefile 2”时;path\logfile”,程序的参数以“2>结尾。文件重定向是shell的一个操作,它不是从ant内部使用的。如果你看一下这些文件 ant exec task ,您将看到它支持通过 属性

        2
  •  2
  •   Derek Slager    15 年前

    你试过了吗 <arg line="..." /> ?

        3
  •  1
  •   Yishai    15 年前

    ant exec任务有一个输出参数,您可以在其中指定日志文件,而不需要命令行管道,并结合参数append来确定是否应该覆盖或追加输出文件。

        4
  •  1
  •   MaGaM    13 年前

    我有一个和话题发起者一样的问题。在java执行命令行上,我需要将源文件添加为单独的参数,而不是一个带引号的参数。 我用了 <arg value="..." /> 标记,但使用 <arg line="..." />