0

我正在尝试使用经典 ASP 的服务器端 Javascript 将所有子文件夹递归检索到以字符分隔的字符串“列表”中。这是我应该做的伎俩的功能:

function hasContent(text) {
if (text == undefined) {
    return false;
} else if (text === undefined) {
    return false;
} else if (text == "undefined") {
    return false;
} else if (text === "undefined") {
    return false;
} else if (typeof text == "undefined") {
    return false;
} else if (text == null) {
    return false;
} else if (text === null) {
    return false;
} else if (text == "") {
    return false;
} else if (text === "") {
    return false;
} else {
    return true;
}
}

function generateActualPath(path) {

try {
    if (!hasContent(path)) {
        return "./";
    } 

    if (!/.+[\\/\\\\]$/.test(path)) {
        path += "/";
    } 

    if (!/^\\./.test(path)) {
        path = "." + path;
    }

    return path;

} catch (e) {
    return "./";
}
}

function retrieveDirectories(dir) {
    try {
        var actualPath = '/' + dir;
        var obj = Server.CreateObject("Scripting.FileSystemObject");
        dirs = obj.GetFolder(Server.MapPath(generateActualPath(actualPath)));
        for (var enumm = new Enumerator(dirs.subFolders); !enumm.atEnd(); enumm.moveNext()) {
            if (/^[a-zA-Z0-9\-_&%#]/.test(enumm.item().Name) && enumm.item().Name.trim().indexOf('_') != 0) {
                if (hasContent(Session("directories"))) {
                    Session("directories") += enumm.item().Name + '|';
                } else {
                    Session("directories") = enumm.item().Name + '|';
                }
                retrieveDirectories(enumm.item().Name);
            }
        }
    } catch (e) {} 
}

但是,尽管进行了递归调用,但我只看到了“dir”的第一级子文件夹,没有更多的东西。我可能在这里缺少什么?我验证了“dir”最多有 4 个子目录的子目录,这些子目录不以“_”开头,并且根据客户要求包含合法的字母数字字符。

4

0 回答 0