0

我有一个文件集,其中包含 10 个带有扩展名的文件。我需要然后将文件名和扩展名放入 2 个单独的属性/变量中,但不确定如何。作为一个文件,我需要这样做的原因在 Unix 上以 XB12345.FILE 开头,我需要移动到文件名为 XB12345.FILE 且成员为 FILE.MBR 的 I/5 系统。大多数文件没有一致的扩展名,只能在运行时知道。任何帮助,将不胜感激。

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 回答