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