nant: я могу извлечь последний каталог в пути? - PullRequest
1 голос
/ 28 сентября 2008

В Nant я хотел бы иметь возможность извлечь фамилию каталога в пути.
Например, у нас есть путь 'c: \ my_proj \ source \ test.my_dll \'

Я хотел бы перейти по этому пути и извлечь 'test.my_dll'

Есть ли способ легко сделать это?

Ответы [ 6 ]

4 голосов
/ 10 октября 2014

Вы можете сделать это с помощью существующих строковых функций NAnt. Просто немного некрасиво ...

${string::substring(path, string::last-index-of(path, '\') + 1, string::get-length(path) - string::last-index-of(path, '\') - 1)}
2 голосов
/ 12 февраля 2013

Можно найти родительский каталог вашего пути, а затем использовать строку замены, чтобы найти нужную папку:

<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 + '\', '') }" />
1 голос
/ 22 июня 2014

Возможно, вы захотите попробовать новую функцию, добавленную к nant 0.93 (хотя все еще в ночных сборках) -

directory::get-name(path)

Это вернет имя каталога, указанного в path.

См. nant help

0 голосов
/ 10 марта 2016

Расширение на Стива К:

<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>
0 голосов
/ 28 сентября 2008

Нет. Вам нужно написать пользовательское задание для чего-то подобного.

0 голосов
/ 28 сентября 2008

См. Задачу script . Вы можете написать собственный код на C # или в любом другом месте и вернуть значение, которое вы можете присвоить свойству.

...