2011-04-29 83 views

回答

9

稍微更有效的方法做什麼@馬特Shooks建議將直接使用列表功能,而不是轉換爲數組(因爲你只需要一次引用它) 。

fullpath = getDirectoryFromPath(getCurrentTemplatePath()) 

假設你是在Windows上,你的FULLPATH看起來像C:\的Inetpub \網站\目錄,你可以使用這個:

thisFolder = listlast(fullpath, "\/") 

請記住,所有列表功能,可以採取一個分隔符(可選),因此您可以將任何以此形式分隔的字符串視爲列表,而不僅僅是默認的逗號分隔列表。

+0

只有當前文件名才能獲得您的模板路徑包含模板本身。我認爲數組看起來有點乾淨,然後使用ListGetAt獲取列表中倒數第二個元素。 – 2011-04-29 16:05:33

+1

我編輯了Ben的答案,也使用getDirectoryFromPath()將文件名從字符串末尾剝離。我還將斜線添加爲一個參數,以便Unix樣式的目錄字符串不會拋出它。 – ale 2011-04-29 16:19:17

+0

謝謝,@Al。我平時使用expandP {ath(),忘記getCurrentTemplatePath()包含文件名。 – 2011-04-29 17:56:26

0

如果你的問題是要找到一個目錄內文件或文件夾的名稱,你可以使用:

<cfdirectory action="LIST" directory="C:\KnownDirectory" name="DirectoryContentsList" /> 
<ul> 
<cfoutput query="DirectoryContentsList"> 
    <cfif DirectoryContentsList.TYPE eq "D"> 
     <li>#DirectoryContentsList.Name#</li> 
    </cfif> 
</cfoutput> 
</ul> 

此代碼應列出指定目錄內的所有目錄。我沒有對它進行測試,所以可能會出現拼寫錯誤或錯誤,但它會給出您的總體想法。

3

如果我正確地閱讀了您的問題,您正在從模板的完整路徑中查找當前模板文件夾的名稱。像這樣的東西應該工作:

<cfset path = ListToArray(GetCurrentTemplatePath(), "\") /> 
<cfset folderName = path[DecrementValue(ArrayLen(path))] /> 
<cfoutput>#folderName#</cfoutput> 
+0

+1謝謝你,馬特,你朝着正確的方向前進。 – 2011-05-01 16:43:31

相關問題