nant:我可以提取路径中的最后一个目录吗?

时间:2008-09-28 16:47:24

标签: nant

在Nant,我希望能够在路径中提取目录的姓氏 例如,我们有路径'c:\ my_proj \ source \ test.my_dll \'

我想通过该路径并提取'test.my_dll'

有没有办法轻松做到这一点?

6 个答案:

答案 0 :(得分:4)

您可以使用现有的NAnt字符串函数实际执行此操作。只是有点难看......

${string::substring(path, string::last-index-of(path, '\') + 1, string::get-length(path) - string::last-index-of(path, '\') - 1)}

答案 1 :(得分:2)

可以找到路径的父目录,然后使用字符串替换来查找您要查找的文件夹:

<property name="some.dir" value="c:\my_proj\source\test.my_dll" />
<property name="some.dir.parent" value="${directory::get-parent-directory(some.dir)}" />
<property name="directory" value="${string::replace(some.dir, some.dir.parent + '\', '') }" />

答案 2 :(得分:1)

您可能想尝试将新功能添加到nant 0.93(尽管仍在夜间构建中) -

directory::get-name(path)

这将返回path中提到的目录的名称。

请参阅nant help

答案 3 :(得分:0)

请参阅script任务。您可以使用C#或其他任何内容编写自定义代码,并返回可以分配给属性的值。

答案 4 :(得分:0)

没有。你需要为这样的事情编写一个自定义任务。

答案 5 :(得分:0)

扩展Steve K:

<script language="C#" prefix="path" >
    <code>
        <![CDATA[
          [Function("get-dir-name")]
          public static string GetDirName(string path) {
              return System.IO.Path.GetFileName(path);
          }
        ]]>
    </code>
 </script>

<target name="build">
    <foreach item="Folder" in="." property="path">
        <echo message="${path::get-dir-name(path)}" />
    </foreach>
</target>