2014-02-07 3 views
1

У меня есть несколько файлов во временной папке. Я могу загрузить их в Photoshop с помощью сценариев следующее:getFiles() not folders

var sourceFolder = Folder("C:\\temp"); 
    if (sourceFolder != null) 
    { 
    var fileList = sourceFolder.getFiles(); 
    } 

Это все хорошо, но как я могу игнорировать каталоги (например, C: \ Temp \ вафли), которые также могут быть там также.

Я понимаю, что я могу проверить правильность расширений изображений, а затем добавить их в новый массив файлов и загрузить их. Я не думаю, что здесь используется опция поиска TopDirectoryOnly.

+0

возможно дубликат [Исключение определенных расширений файлов, когда получить файлы из директории] (http://stackoverflow.com/questions/755166/exclude-certain-file-extensions-when-get-files-from- a-directory) – Max

ответ

2

С тех пор как getFiles() "Returns an array of File and Folder objects" Вам потребуется выполнить итерацию по каждому возвращенному объекту и проверить, что это за объект. Из Creative Suite 5 Javacript Tools Guide

Существует несколько способов различения объекта File и Folder. Например:
if (f instanceof File)...
if (typeof f.open == "undefined")... //Folders do not open.
+0

Спасибо, Rich. Именно это я и сделал! –

0

Если я использую это при получении папки или файлы, я избегаю писать if() позже:

var fileList = sourceFolder.getFiles(function(f) { return f instanceof File; }); 

Те же при получении только папки:

var fileList = sourceFolder.getFiles(function(f) { return f instanceof Folder; }); 

Однако рекомендуется использовать функцию getFiles как можно меньше, так как код будет работать fa стер.

Я также использую объекты RegExp для выбора только определенных подпапок в папке.

Например, если я устанавливаю регулярное выражение, как 'regthis' var, как показано ниже. Папки, собранные с помощью 'getFiles', будут иметь имя:
A) Должен иметь «12345678» в конце или заглавную букву до «12345678»;
B) Должен также иметь один из двух символов ('_' или 'c') до A;
C) Должен иметь 1 строчную букву 'a-v' перед B + A;
D) Не должен иметь «x» или «y» или «z» перед C + B + A;

var ID_ = '12345678'; 
var regthis = new RegExp('([^x-z]{1}[a-v]{1}[_|c]{1})([A-Z]?'+ID_+'?)$','i'); 
var sameIDfolder = Folder(myFolder).getFiles(regthis); 

 Смежные вопросы

  • Нет связанных вопросов^_^