Помогите пж. со строкой скрипта!

  • Автор темы Автор темы chesen
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

chesen

Топикстартер
20 лет на форуме
Сообщения
553
Реакции
49
Скрипт с диалогом выбора папки. Но необходимо, что бы он захватывал и вложенные папки.
Вот элемент. На CS2))
Код:
var Folder_url = ''+prefs.DefFolder;
var FolderRef = new Folder(Folder_url);
var FileArr = FolderRef.getFiles('*.jpg*');
 
Одной строкой не получится.
Только рекурсивным вызовом.
 
PHP:
Folder.prototype.collectAllFiles = function() {
    var result = [];
    var files = this.getFiles();
    for (var counter = 0; counter < files.length; counter++) {
        if (files[counter].constructor.name == 'File') {
            result.push(files[counter]);
        } else {
            result = result.concat(files[counter].collectAllFiles());
        }
    }
    return result;
}
 
  • Спасибо
Реакции: kstati, chesen и _MBK_
Оригинально
 
Да, красиво.
Пожалуй, сохраню в файлик под названием "стихи_о_вложенных папках.Oleg_Butrin".
 
Да, это лирика, но в моем случае не проходит...
Как-то это реализовано у Dr. Brown's Services. Но там через чек-бокс.Черт ногу сломит.
 
Не работает. ((
У меня CS2.
Или я тупой.((
 
Это нативный jsx, от версии не зависит.
Поскольку реализован как расширение функционала объекта Folder, работает так:
PHP:
var fldr = Folder('путь_к_папке');
var allFiles = fldr.collectAllFiles();
 
А как срастить с
Код:
var Folder_url = ''+prefs.DefFolder;
var FolderRef = new Folder(Folder_url);
var FileArr = FolderRef.getFiles('*.jpg*');
?
в скрипте путь кнопкой выбирается.
 
Элементарно же.

PHP:
Folder.prototype.collectAllJPGFiles = function() {
    var result = [];
    //все, что кончается на ".jpg"
    var re = /\.jpg$/gim;
    var files = this.getFiles();
    for (var counter = 0; counter < files.length; counter++) {
        if (files[counter].constructor.name == 'File') {
            //проверка на расширение
            if re.test(files[counter].name.toString()) {
                result.push(files[counter]);
            }
        } else {
            result = result.concat(files[counter].collectAllFiles());
        }
    }
    return result;
}

var Folder_url = '' + prefs.DefFolder;
var FolderRef = new Folder(Folder_url);
var FileArr = FolderRef.collectAllJPGFiles();
 
  • Спасибо
Реакции: dumbm1 и chesen
Рекурсией красиво, но стек не резиновый. На корневые папки лучше не натравливать.
 
Элементарно же.
Правильнее так ;)
Код:
Folder.prototype.collectAllJPGFiles = function() {
    var result = [];
    //все, что кончается на ".jpg"
    var re = /\.jpg$/gim;
    var files = this.getFiles();
    for (var counter = 0; counter < files.length; counter++) {
        if (files[counter].constructor.name == 'File') {
            //проверка на расширение
            if (re.test(files[counter].name.toString())) {
                result.push(files[counter]);
            }
        } else {
            result = result.concat(files[counter].collectAllJPGFiles());
        }
    }
    return result;
}

var Folder_url = '...';
var FolderRef = new Folder(Folder_url);
var FileArr = FolderRef.collectAllJPGFiles();
 
  • Спасибо
Реакции: dumbm1 и chesen
Ребятки! Ура! Все функционирует! Всем спасибо!!!
 
Статус
Закрыто для дальнейших ответов.