0

Classic 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