Как получить имя текущей папки, а не каталог папки

#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>
  

В этом коде должны быть перечислены все каталоги внутри указанного каталога. Я не тестировал это, поэтому могут быть опечатки / ошибки, но это дает вам общее представление.