Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Вот рекурсия на VBS
Код: Выделить весь код
AllDir = "P:\DDDDDD"                     ' ---------  Полное имя рабочего каталога (без слэжа \ на конце)

OutStr = AllDir + vbCrLf
OutStr = OutStr + AllFolders(AllDir)

MsgBox OutStr

' ---------------------------------------------------------------------------
Function AllFolders(WDir)
'   MsgBox WDir
    Rezult = ""
    Set F = CreateObject("Scripting.FileSystemObject").GetFolder(WDir)
    Set SubF = F.SubFolders

    For Each Folder In SubF
        Rezult = Rezult + WDir + "\" + Folder.Name + vbCrLf
        Rezult = Rezult + AllFolders(WDir + "\" + Folder.Name)
    Next

    AllFolders = Rezult
End Function
Вот рекурсия на JS
Код: Выделить весь код
var AllDir = "P:\\dddddd";           //---------  Полное имя рабочего каталога (без слэжа \\ на конце)

var OutStr=AllDir+"\n";

OutStr+=AllFolders(AllDir);

WScript.Echo(OutStr);

// ---------------------------------------------------------------------------
function AllFolders(WDir)
{
//    WScript.Echo(WDir);
    var F,Rezult,Folders;

    F=WScript.CreateObject("Scripting.FileSystemObject").GetFolder(WDir);
    Rezult="";

    Folders=new Enumerator(F.SubFolders);

    for (; !Folders.atEnd(); Folders.moveNext())
    {
//       WScript.Echo(Folders.item().Name);
       Rezult+=WDir+"\\"+Folders.item().Name+"\n";
       Rezult+=AllFolders(WDir+"\\"+Folders.item().Name);
    }

    return Rezult;
}
Всё дело в видимости переменных в JS. Пока в функции не написал:
var F,Rezult,Folders;
у меня тоже не работало.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:11, 16-02-2011 | #5