2009-07-06 68 views
5

當使用cfdirectory,我怎麼可能排除所有的CFM文件並列出所有其他不指定我想看到的,或排除像index.html的一個特定的文件沒有做查詢查詢所有文件的文件擴展名?是否有可能以某種方式排除cfdirectory的文件?

我正在尋找的東西像下面,請注意過濾屬性。

<cfdirectory directory="#ExpandPath('./')#" action="list" name="qryFiles" filter="!index.html" sort="name ASC" listinfo="name"> 

或:

<cfdirectory directory="#ExpandPath('./')#" action="list" name="qryFiles" filter="!*.cfm" sort="name ASC" listinfo="name"> 
+2

你爲什麼如此反對使用QoQ的想法?這是一個非常強大的工具。 – 2009-07-07 12:16:31

+0

我並不反對,我只是想知道是否有一些無證過濾器的好東西可以用來在一個聲明中完成工作,而不是寫QoQ或cfif語句。 – Jayson 2009-07-07 12:46:30

回答

6

過濾器屬性,如果你試圖做一個排除沒用。案例分析:就在昨天,我想用cfdirectory抓住所有子目錄,但EXLCUDE以句點開始的任何目錄「」這樣我就可以排除諸如「.svn」和「.git」之類的東西。毋庸置疑,我搜遍了各地,無法找到答案。

在最後我只是用我的環一些條件邏輯結束:

<cfloop query="mydir"> 
    <cfif left(name, 1) neq "."> 
    <!--- do some code ---> 
    </cfif> 
</cfloop> 

其中完成了任務。當然,我可以使用QoQ,但是對於我來說,添加所有這些開銷來過濾出以一段時間開始的目錄似乎很愚蠢。

底線是,是的,當涉及到使用cfdirectory進行排除過濾時,我們搞砸了,但沒有理由不能用你的想象力和一點點代碼來獲得你想要的結果。

+0

這就是我害怕的問題。我希望不必使用各種cfif或QoQ語句來獲得我想要的。也許Adobe將在CF9中爲我們帶來驚喜。我想知道Railo或OpenBD是否有更好的cfdirectory標籤過濾器? – Jayson 2009-07-07 12:05:57

0

我敢肯定的!運算符在filter參數中不起作用。

我沒有看到讓周圍做查詢的查詢或通過查詢與CFOUTPUT/CFLOOP循環,然後檢查了CFIF/cfcase語句中的每個文件名的值,就看你想讓它的方法出現。

6

不,這不可能單獨cfdirectory排除文件。 filter屬性僅指定要包含哪些文件,使用DOS樣式通配符(*?)。

最簡單的解決方案是可能與CFQUERY事後進行過濾。

<cfquery name="qryFiles" dbtype="query"> 
    SELECT * FROM qryFiles 
    WHERE name not like '%.cfm' 
</cfquery> 
1

也許可以做到這一點與java對象..

CreateObject("java", "java.io.File"); 

..和一個 filename filter

個人而言,我認爲你會更好只是使用查詢的查詢。

+0

這可能是cfdirectory在內部使用的。但我同意QoQ會是更簡單的選擇。 – Leigh 2009-07-07 00:08:15

2

您可以創建一個跑了CF目錄,然後環繞在(例如您有)建立一個新的查詢或搜索結果中的結構的自定義標籤。這將使得在其他情況下,稍微重用。

相關問題