5

cfdirectory を使用する場合、表示したいすべてのファイルのファイル拡張子を指定せずに、すべての cfm ファイルを除外して他のすべてのファイルを一覧表示するにはどうすればよいですか?

次のようなものを探しています。フィルター属性に注意してください。

<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">
4

5 に答える 5

6

除外を行おうとしている場合、filter属性は役に立ちません。適切な例:昨日、cfdirectoryを使用してすべてのサブディレクトリを取得したかったのですが、ピリオド「。」で始まるディレクトリはすべて除外しました。「.svn」や「.git」などを除外できるようにします。言うまでもなく、私はあちこちを検索し、答えを見つけることができませんでした。

結局、ループで条件付きロジックを使用することになりました。

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

これで仕事は終わりました。もちろん、QoQを使用することもできますが、ピリオドで始まるディレクトリを除外するためにそのオーバーヘッドをすべて追加するのはばかげているように見えました。

結論としては、そうです、cfdirectoryを使用した除外フィルタリングに関しては困惑していますが、想像力と少しのコードを使用して目的の結果を得ることができない理由はありません。

于 2009-07-07T11:45:20.277 に答える
6

いいえ、cfdirectoryだけでファイルを除外することはできません。filter 属性は、DOS スタイルのワイルドカード (*および?) を使用して、含めるファイルのみを指定します。

おそらく最も簡単な解決策は、cfquery を使用して事後にフィルタリングすることです。

<cfquery name="qryFiles" dbtype="query">
    SELECT * FROM qryFiles
    WHERE name not like '%.cfm'
</cfquery>
于 2009-07-06T21:06:12.837 に答える
2

CF ディレクトリを実行し、結果をループして新しいクエリまたは結果を含む構造を構築するカスタム タグを作成することができます。

于 2009-07-07T11:59:11.840 に答える
1

Javaオブジェクトでこれを行うことは可能かもしれません..

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

..ファイル名フィルタ

個人的には、クエリのクエリを使用する方が良いと思います。

于 2009-07-06T21:09:44.717 に答える
0

私はかなり確信しています!演算子はフィルター パラメーターでは機能しません。

クエリのクエリを実行したり、cfoutput/cfloop を使用してクエリをループしたり、cfif/cfcase ステートメントを使用して各ファイル名の値をチェックしたりして、表示するかどうかを確認する方法がわかりません。

于 2009-07-06T20:59:40.823 に答える