0

私はmqfteで働いています。宛先に転送された後、ソースファイルと同じ名前の空のtxtファイルを作成する必要があります。antスクリプトを使用してこれを行うにはどうすればよいですか?

シナリオ:

Srcpath:\ src \ test.dat destpath:\ dest \ test.dat

ファイルがsrcパスから移動された後、antスクリプトを使用してsrcパスに空のファイルtest.datを作成する必要がありますか?これはどのように行うことができますか?

4

1 に答える 1

1

ファイルを転送する前に、Touchタスクを使用して、転送するファイルと一致する新しい空のファイルを一時ディレクトリに作成する (同じファイルセットを再利用する) ことができます。転送が完了したら、Moveタスクを使用して空のファイルを src ディレクトリにコピーできます。Move タスクで 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>

最初の動きはあなたの転送の代役です。1 つのファイル (test.doc) が src dir から移動されません (失敗した転送をシミュレートします)。src ディレクトリにコンテンツを含むファイルを作成してテストできます。ターゲットが完了した後も、test.doc には元のコンテンツが残っているはずです。他のファイルは空にする必要があります。

正規表現マッパーに関する質問への回答:

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

これにより、着信ファイル名全体がグループにキャプチャされます...

from="(.*)"

そのキャプチャされたグループの前に「tmp/」を追加します...

to="tmp/\1"

(正規表現\1では、式で最初にキャプチャされたグループを参照します。グループは括弧を使用して定義されます。)

から、マッパーへの入力ファイルとしてsrc/somefile.txt取得し、これを に変換します。somefile.txttmp/somefile.txt

于 2011-05-26T14:44:39.527 に答える