Эта функция nantcontrib поместит соответствующие имена файлов в строку с разделителями. .
Если вы знаете, что будет существовать только один соответствующий файл, он может получить то, что вы хотите. Если их несколько, вы можете использовать функцию nant substring , чтобы просто получить первое совпадение, перенеся подстроку в первый разделитель.
Следующий скрипт nant:
<?xml version="1.0" encoding="utf-8"?>
<project default="find-file2">
<property name="NantContrib.dir" value="C:\Program Files\nantcontrib-0.85\" readonly="true" />
<target name="LoadNantContrib">
<loadtasks assembly="${NantContrib.dir}bin\NAnt.Contrib.Tasks.dll" />
</target>
<target name="find-file2" depends="LoadNantContrib">
<fileset id="find.set">
<include name="${param.dir}\**\${param.pattern}" />
</fileset>
<property name="return.file" value="${fileset::to-string('find.set', ' | ')}" />
<echo message="return.file=${return.file}"/>
<echo message="Found ${fileset::get-file-count('find.set')} files"/>
</target>
</project>
... и следующая структура папок:
\---folderroot
+---folder1
| dontfindme.txt
| findme.txt
|
+---folder2
| dontfindme.txt
|
\---folderempty
... работает как положено. Поиск findme.txt находит один файл. Поиск dontfindme.txt находит два файла. Поиск * .txt находит три файла.
Пример вызова:
nant -D:param.dir=folderroot -D:param.pattern=findme.txt
Пример вывода:
find-file2:
[echo] return.file=C:\Documents and Settings\rbaker\My Documents\nantfindfile\folderroot\folder1\findme.txt
[echo] Found 1 files
BUILD SUCCEEDED