主题:  FSO遍历目录之后,如何赋值到函数返回值

silvanesw

职务:普通成员
等级:1
金币:0.0
发贴:45
注册:2002/9/12 0:12:57
#12006/11/28 20:57:02
<%
path="h:\net\Shanda"
    function ShowDir(path)
        On Error Resume Next
        Dim fso 'fso对象
        Dim objFolder '文件夹对象
        Dim objSubFolder '子文件夹对象
        Dim objFile '文件对象
        Dim nowpath '过程中要用到的变量,表示当前文件夹
        
        '下面一段先判断文件夹是否存在,如不存在,给出提示信息,跳出循环
        Set fso=Server.CreateObject("Scripting.FileSystemObject"
        If Not fso.FolderExists(path) Then
            Set fso=Nothing
            Response.Write "这个文件夹根本就不存在"
            Exit Function
        End If
        '创建文件夹对象
        Set objFolder=fso.GetFolder(path)
        '下面一段显示该文件夹下的所有子文件夹,注意其中会递归调用
        'Response.Write "<ul>"
        For Each objSubFolder In objFolder.Subfolders
            'Response.Write "<li>" &path &objSubFolder.name &"< >"
            s=s&path &"\"&objSubFolder.name &"<br>"
            nowpath=path + "\" + objSubFolder.name '新的路径为当前文件夹的路径
            Call ShowDir(nowpath) '这里递归调用
        Next
        '下面一段显示该文件夹下的所有子文件
        For Each objFile In objFolder.Files
            'Response.Write "<li>"& path &"\"&objFile.name &"< >"
            s=s& path &"\"&objFile.name &"<br>"
        Next
        'Response.Write "</ul>"
        '释放
        response.write s
        ShowDir=s
        Set objFolder=Nothing
        Set fso=Nothing
    End function
    response.Write ShowDir(path)
%>
代码如上。主要功能已经实现。现在的问题是。
如果在函数内部以response.write s形式输出的话,是可以显示在WEB上。功能可以实现。但是我现在需要以返回值的形式得到它的内容(原因是我需要保存成文本文件,而且这个函数我需要用FOR反复调用),然后再用FSO写入到文件中。可是用ShowDir=s却只能得到第一行。



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
注册:2004/1/14 19:14:47
#22006/11/28 21:05:01
先把Response.write的内容赋值到一个string变量
最后返回



silvanesw

职务:普通成员
等级:1
金币:0.0
发贴:45
注册:2002/9/12 0:12:57
#32006/11/28 21:09:46
请教楼上的如何改。我已经弄了两天了还没有搞定。。。晕头转向了。



5D荣誉斑竹

职务:普通成员
等级:2
金币:10.0
发贴:710
注册:2001/10/24 18:34:42
#42006/12/14 13:44:38
有点混乱,你输出可以尝试放在一个全局变量中,而不要用ShowDir,过程一般不要返回值,递归以后要混乱的