Skip to main content
Geppetto Luis
Legend
September 18, 2019
Question

display number of files contained in the folder in dialog ui

  • September 18, 2019
  • 2 replies
  • 957 views

I would like to select a folder and see the number of files in the dialog box
As in the figure below.

 

 

// script

win = new Window("dialog", "test");

win.orientation = "column";

FC = win.add("group");

tgf = FC.add("group");

sourceFolder = tgf.add("button", undefined, "Browse");

sourceFolder.minimumSize.width = 100;

sourceFolder.string = tgf.add("edittext", undefined, " ");

sourceFolder.string.minimumSize.width = 150;

sourceFolder.onClick = function() {

var selFolder = Folder.selectDialog("Select Folder.");

if ( selFolder != null ) {

sourceFolder.string.text = selFolder.fsName;

choosePath = selFolder.fsName;

sourceFolder.string.helpTip = selFolder.fsName.toString(); } };

FC = win.add("group");

baton22 = FC.add("group");

Res = FC.add("statictext", undefined, "Number of files in the folder: 32");

 

Res.onClick = function () { } closeBtn = FC.add("button", undefined, "ok");

closeBtn.onClose = function () { win.close(); };

win.show();

 

 

 

This topic has been closed for replies.

2 replies

smithcgl9043167
Inspiring
September 18, 2019

 

Try it! I added a few lines of code taken from a script written by r-bin.

var selFolder = null;
var files_mask = "\\.jpg|\\.jpeg|\\.png|\\.tif|\\.tiff|\\.psd|\\.gif|"; 

win = new Window("dialog", "test");
win.orientation = "column";
FC = win.add("group");
tgf = FC.add("group");
sourceFolder = tgf.add("button", undefined, "Browse");
sourceFolder.minimumSize.width = 100;
sourceFolder.string = tgf.add("edittext", undefined, " ");
sourceFolder.string.minimumSize.width = 150;

sourceFolder.onClick = function() {

var selFolder = Folder.selectDialog("Select Folder.");
    if (selFolder != null) {
        sourceFolder.string.text = decodeURI(selFolder.fsName)
    }

    if (selFolder == null) {}
    var files = new Array();
    if (!init_files(selFolder)) {}
    var len = files.length;
    if (!len) return;
    for (var i = 0; i < len; i++) {
        Res.text = "Number of files in the folder: " + len;
        (files[i]);
    }

    function init_files(folder, use_subfolders) {
        try {
            var f = folder.getFiles();
            for (var i = 0; i < f.length; i++) {
                if (f[i] instanceof File && f[i].name.match(RegExp(files_mask + "$", "i")))
                    files.push(f[i]);
                else if (use_subfolders && f[i] instanceof Folder)
                    if (!init_files(f[i], use_subfolders)) return false;
            }
            return true;
        } catch (e) {
            return false;
        }
    }
    alert(len) //////////   Delete this line (only shows the number of files outside ScriptUI)
};

FC = win.add("group");
baton22 = FC.add("group");
Res = FC.add("statictext", undefined, "No files yet                                         ");
Res.onClick = function() {}
closeBtn = FC.add("button", undefined, "ok");
closeBtn.onClose = function() {
    win.close();
};
win.show();

 

Geppetto Luis
Legend
September 18, 2019
Yes, that's exactly what I was looking for thanks
smithcgl9043167
Inspiring
September 18, 2019

To show all files if there are subfolders, modify line 22:

To exchange: if (! init_files (selFolder)) {}

Per: if (! init_files (selFolder, true)) {}

Legend
September 18, 2019

Folder.getFiles() might be the right road to head down.