0

拡張子を持つファイルが 10 個あるファイルセットがあります。次に、これを取得して、ファイル名と拡張子を2つの個別のプロパティ/変数に取得する必要がありますが、方法がわかりません. ファイルが XB12345.FILE というファイル名と FILE.MBR というメンバーを持つ I/5 システムに移動する必要があるファイルとして、Unix で XB12345.FILE としてこれを行う必要がある理由。ほとんどのファイルには一貫した拡張子がなく、実行時にのみ認識されます。どんな助けでも大歓迎です。

4

2 に答える 2

5

これは、Ant-Contribタスクの仕事のように思えます。

Ant-Contrib タスクは長い間存在しており、Ant プロジェクトでよく見られます。PropertyRegexタスクは、必要なことを行います。実際、ループを処理できるForタスクもあります。

タスクは次の<PropertyRegEx>ようになります。

<propertyregex property="base.name"
    input="file.name"
    regexp="(.*)\.(.*)"
    select="\1"/>

<propertyregex property="suffix.name"
    input="file.name"
    regexp="(.*)\.(.*)"
    select="\2"/>

次の手順に従えば、Ant-Contrib タスクのインストールは非常に簡単です。

  • ant-contrib-1.0b3.jar をダウンロードします。
  • プロジェクトのルートに というディレクトリを作成しますantlib/ac
  • ant-contrib-1.0b3.jar file in theantlib/ac` ディレクトリを置きます。
  • タスク定義を追加します。

このような:

<taskdef resource="net/sf/antcontrib/antlib.xml">
    <classpath>
        <fileset dir="${basedir}/antlib/ac"/>
    <classpath>
</taskdef>

バージョン管理システムを使用している場合は、プロジェクトのバージョン管理システムに ant-contrib-1.0b3.jar ファイルをチェックインします。現在、誰かがビルドを行う必要がある場合、彼らはあなたのプロジェクトをチェックアウトします。Ant Contrib タスクは既に定義されており、Ant-Contrib jar はそこにあります。開発者が Ant-Contrib をインストールする必要はありません。あなたのビルドは機能します。

于 2012-12-05T04:38:42.840 に答える
0

propertyregex は意図した問題の解決策ですが、解決策にはオーバーライド プロパティを使用する必要があります。

<propertyregex property="base.name"
    input="file.name"
    regexp="(.*)\.(.*)"
    select="\1" override="true"/>

<propertyregex property="suffix.name"
    input="file.name"
    regexp="(.*)\.(.*)"
    select="\2" override="true"/>
于 2012-12-05T06:23:54.330 に答える