在南特,我希望能夠提取路徑中的目錄的姓氏。
例如,我們有路徑「C:\ my_proj \源\ test.my_dll \」nant:我可以提取路徑中的最後一個目錄嗎?
我想在這條道路通過,並提取「test.my_dll」
有沒有一種辦法輕鬆做到這一點?
在南特,我希望能夠提取路徑中的目錄的姓氏。
例如,我們有路徑「C:\ my_proj \源\ test.my_dll \」nant:我可以提取路徑中的最後一個目錄嗎?
我想在這條道路通過,並提取「test.my_dll」
有沒有一種辦法輕鬆做到這一點?
請參閱script任務。您可以使用C#或其他方式編寫自定義代碼,並返回可分配給屬性的值。
不需要。您需要爲此類事情編寫自定義任務。
這是有可能找到你的路徑的父目錄,然後使用字符串替換找到你要找的文件夾:
<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 + '\', '') }" />
實際上,你可以與現有的惡性字符串函數做到這一點。只是有點難看......
${string::substring(path, string::last-index-of(path, '\') + 1, string::get-length(path) - string::last-index-of(path, '\') - 1)}
擴大史蒂夫·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>
你可以注入任何C#代碼爲惡性腳本。哇...多麼讓人難過:) – 2016-07-15 05:54:27