1

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

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

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

4

6 回答 6

5

您实际上可以使用现有的 NAnt 字符串函数来实现。就是有点丑。。。

${string::substring(path, string::last-index-of(path, '\') + 1, string::get-length(path) - string::last-index-of(path, '\') - 1)}
于 2014-10-10T13:22:47.160 回答
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 + '\', '') }" />
于 2013-02-12T16:34:30.877 回答
1

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

directory::get-name(path)

这将返回path.

参考nant帮助

于 2014-06-22T07:37:21.700 回答
0

查看脚本任务。您可以使用 C# 或其他方式编写自定义代码,并返回一个可以分配给属性的值。

于 2008-09-28T17:10:30.687 回答
0

不,您需要为类似的事情编写自定义任务。

于 2008-09-28T17:13:25.690 回答
0

扩展史蒂夫 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>
于 2016-03-10T09:22:12.023 回答