gpt4 book ai didi

ant - 只需要获取没有扩展名和整个路径的文件名

转载 作者:行者123 更新时间:2023-12-04 17:36:38 24 4
gpt4 key购买 nike

我在一个文件夹中有几个 .xml 文件。我想在每个 .xml 文件上循环。它越来越好。
我只想取没有完整路径的 .xml 文件名。
我怎样才能做到这一点。?

我正在使用下面的一段代码来获取文件名。

<target name="createApplicationDAA">
<for param="program">
<path>
<fileset dir="${soaProjectName}/Composites" includes="**/*.xml"/>
</path>
<sequential>
<propertyregex override="yes" property="file" input="@{program}" regexp=".*/([^\.]*)\.xml" replace="\1"/>
<echo>@{program}</echo>
</sequential>
</for>
</target>

文件夹名称是 C:/abc/bcd/cde
first.xml,second.xml,third.xml,fourth.xml 是 cde 文件夹中的 .xml 文件。
当我执行上面的代码时,它会得到整个路径,如 C:/abc/bcd/cde/first.xml ..etc
我只想获得 first.xml 的第一个和 second.xml 的第二个。
请帮我实现唯一的文件名。

最佳答案

编辑 经过进一步调查(见评论)

使用 basename 任务时不需要正则表达式。属性一旦设置在 vanilla ant 中是不可变的,因此在 for 循环中使用 basename 任务时,属性 FileName 保存第一个文件的值。因此必须使用 unset="true"的 antcontrib var 任务:

 <for param="program">
<path>
<fileset dir="C:\whatever" includes="**/*.xml"/>
</path>
<sequential>
<var name="FileName" unset="true"/>
<basename property="FileName" file="@{program}" suffix=".xml"/>
<echo>${FileName}</echo>
</sequential>
</for>
  • 正则表达式在我的 windowsbox 上不起作用
  • 使用 <echo>@{program}</echo> 时,您正在回显原始文件名
    使用 <echo>${file}</echo>相反

  • 意思是这样的:
    <for param="program">
    <path>
    <fileset dir="C:\whatever" includes="**/*.xml"/>
    </path>
    <sequential>
    <propertyregex override="yes" property="file" input="@{program}" regexp=".:\\.+\\(\w+).+" replace="\1"/>
    <echo>${file}</echo>
    </sequential>
    </for>

    关于ant - 只需要获取没有扩展名和整个路径的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16663388/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com