#coldfusion
#coldfusion
Вопрос:
Я знаю, как получить каталог для папки, но я хотел бы получить имя.
Спасибо за вашу помощь.
Комментарии:
1. но
dir
==folder
не так ли?2. Здесь вам нужно предоставить дополнительную информацию. Что вы пытаетесь сделать, и что вы пробовали до сих пор. Опубликуйте некоторый код и объясните, что вы хотите, чтобы он делал и где вы застряли.
Ответ №1:
Немного более эффективным методом для выполнения того, что предлагает @Matt Shooks, было бы прямое использование функций списка, а не преобразование в массив (поскольку вам нужно ссылаться на него только один раз).
fullpath = getDirectoryFromPath(getCurrentTemplatePath())
предположим, что вы находитесь в Windows, и ваш полный путь выглядит примерно так c:inetpubsitedir вы можете использовать это:
thisFolder = listlast(fullpath, "/")
Помните, что все функции list могут использовать разделитель (необязательно), поэтому вы можете обрабатывать любую строку, разделенную подобным образом, как список, а не только списки, разделенные запятыми по умолчанию.
Комментарии:
1. это дает вам только текущее имя файла, поскольку путь к шаблону включает сам шаблон. Я подумал, что массив выглядит немного чище, чем при использовании ListGetAt для получения предпоследнего элемента в списке.
2. Я отредактировал ответ Бена, чтобы также использовать getDirectoryFromPath(), который удаляет имя файла из конца строки. Я также добавил косую черту в качестве параметра, чтобы строки каталога в стиле Unix не отбрасывали ее.
3. Спасибо, @Al. Обычно я использую expandP{ath() и забыл, что getCurrentTemplatePath() включает в себя имя файла.
4. Спасибо вам, ребята! Перешел на следующий уровень.
Ответ №2:
Если я правильно понял ваш вопрос, вы ищете только имя текущей папки шаблона из полного пути к шаблону. Что-то вроде этого должно сработать:
<cfset path = ListToArray(GetCurrentTemplatePath(), "") />
<cfset folderName = path[DecrementValue(ArrayLen(path))] />
<cfoutput>#folderName#</cfoutput>
Комментарии:
1. 1 Спасибо, Мэтт, ты направил это в правильном направлении.
Ответ №3:
Если ваша проблема заключается в поиске имени файла или папки внутри каталога, вы можете использовать:
<cfdirectory action="LIST" directory="C:KnownDirectory" name="DirectoryContentsList" />
<ul>
<cfoutput query="DirectoryContentsList">
<cfif DirectoryContentsList.TYPE eq "D">
<li>#DirectoryContentsList.Name#</li>
</cfif>
</cfoutput>
</ul>
В этом коде должны быть перечислены все каталоги внутри указанного каталога. Я не тестировал это, поэтому могут быть опечатки / ошибки, но это дает вам общее представление.