用于读取和过滤.cfm文件的ColdFusion代码

时间:2012-02-21 19:08:07

标签: coldfusion

是否可以编写执行以下操作的ColdFusion代码?

  1. 阅读.cfm文件
  2. 过滤.cfm文件中任何附加了“.cfm”的单词。
  3. 将步骤2中找到的文件名列表与目录中的文件进行比较,以确定目录中是否有任何文件不在.cfm文件中。
  4. 在第2步中,我尝试在href中找到.cfm文件名。

    由于

1 个答案:

答案 0 :(得分:3)

我的测试目录是使用reader.cfm和list.cfm设置的。它能够在示例列表文件中找到list.cfm文件,并将reader.cfm文件记录为不存在。

Theres可能是从文件中获取cfm文件名列表的更好方法。我不是正则表达式的大师,但我测试它是否按预期工作。如果你的链接有像_或 - 这样的特殊字符,它可能无法工作。这应该会给你一些开始。

<cffile action="read"
    file="#expandpath('list.cfm')#"
    variable="fileList">

    <cfset fileResult = rematchNoCase('([a-z]|[A-Z]|[0-9])+\.cfm', fileList)>

    <cfdirectory
        directory="#expandPath('.')#"
        action="list"
        filter="*.cfm"
        listInfo="name"
        recurse = "no"
        type="file"
        name="dirList">

    <cfset notInFile = ArrayNew(1)>

    <cfoutput>
        <cfloop query="dirList">
            <cfloop from="1" to="#arrayLen(fileResult)#" index="i">
                <cfif dirList.name eq fileResult[i]>
                    found one! #dirList.name#<br>
                    <cfbreak>
                </cfif>
                <cfif i eq #arrayLen(fileResult)#>
                    Item not found! #dirList.name#<br>
                    <cfset _r = ArrayAppend(notInFile, dirList.name)>
                </cfif>
            </cfloop>
        </cfloop>
    </cfoutput>

    <cfdump var="#notInFile#">

<cffile action="read" file="#expandpath('list.cfm')#" variable="fileList"> <cfset fileResult = rematchNoCase('([a-z]|[A-Z]|[0-9])+\.cfm', fileList)> <cfdirectory directory="#expandPath('.')#" action="list" filter="*.cfm" listInfo="name" recurse = "no" type="file" name="dirList"> <cfset notInFile = ArrayNew(1)> <cfoutput> <cfloop query="dirList"> <cfloop from="1" to="#arrayLen(fileResult)#" index="i"> <cfif dirList.name eq fileResult[i]> found one! #dirList.name#<br> <cfbreak> </cfif> <cfif i eq #arrayLen(fileResult)#> Item not found! #dirList.name#<br> <cfset _r = ArrayAppend(notInFile, dirList.name)> </cfif> </cfloop> </cfloop> </cfoutput> <cfdump var="#notInFile#">

我使用的list.cfm文件的内容。

<a href="someRealLink.cfm">click me to fun</a>
something
other thing
a coldfusion.cfm thing
stuff
things
yar.cfm
blah
Something.cfm
0912.cfm
some123.cfm
cfm
list.cfm

第一个循环遍历我们的目录内容。第二个循环遍历我们正在查看的cfm文件中的数字数组条目。第一个if块查看当前数组位置内容并将其与外部循环名称值进行比较。第二个if可以查看当前数组位置值和最大数组位置值。我们知道如果我们到达当前的locaction == max位置 - 在内部循环(文件数组)中找不到外部循环元素(目录列表)。这是对第一个if块中的<a href="someRealLink.cfm">click me to fun</a> something other thing a coldfusion.cfm thing stuff things yar.cfm blah Something.cfm 0912.cfm some123.cfm cfm list.cfm 所做的。当我们找到有效匹配时,此将突破第二个内循环。这可以防止第二个if块在vaild find上执行。

希望这会有所帮助。如果您觉得答案是XD,请不要忘记接受答案