0

我正在与 mqfte 合作。在将源文件传输到目的地后,我必须创建一个与源文件同名的空 txt 文件。如何使用 ant 脚本做到这一点?

设想:

源路径:\src\test.dat 目标路径:\dest\test.dat

文件从 src 路径移动后,我需要使用 ant 脚本在 src 路径中创建一个空文件 test.dat 吗?如何才能做到这一点?

4

1 回答 1

1

在传输文件之前,您可以使用Touch任务在临时目录中创建与您将要传输的文件匹配的新空文件(重复使用相同的文件集)。传输完成后,您可以使用Move任务将空文件复制到您的 src 目录中。您可以在移动任务中使用 overwrite="false" 以确保保留在 src 目录中的文件不会被替换(例如,如果您想确保只有空文件用于成功传输)。

这是一个例子。

<project default="test">

  <target name="test">

    <touch>
      <fileset dir="src">
        <include name="test*"/>
      </fileset>
      <mapper type="regexp" from="(.*)" to="tmp/\1"/>
    </touch>

    <move todir="dest">
      <fileset dir="src">
        <include name="test*"/>
        <!-- simulate file not transferred -->
        <exclude name="test.doc"/>
      </fileset>
      <globmapper from="test.*" to="result_*.txt"/>
    </move>


    <move todir="src" overwrite="false">
      <fileset dir="tmp"/>
    </move>

  </target>

</project>

第一步代表您的转移。一个文件(test.doc)没有移出 src 目录(模拟传输失败)。您可以测试在 src 目录中创建包含某些内容的文件。目标完成后,test.doc 应该仍然具有其原始内容。其他文件应该是空的。

针对您关于正则表达式映射器的问题:

<mapper type="regexp" from="(.*)" to="tmp/\1"/>

这会将整个传入文件名捕获到一个组中......

from="(.*)"

并将“tmp/”添加到该捕获的组...

to="tmp/\1"

(在正则表达式\1中是指表达式中第一个捕获的组。组使用括号定义。)

因此src/somefile.txt,我们将从 中获取somefile.txt映射器的输入文件,并将其转换为tmp/somefile.txt.

于 2011-05-26T14:44:39.527 回答