XFiler.RegisterCommand("sort_by_size_log", "ファイルサイズ順にログ表示", function () {
    // 1. マークされているアイテムを取得
    var items = XFiler.GetMarkedItems();
    if (items.length === 0) {
        XFiler.Log("アイテムがマークされていません。アイテムをスペースキー等でマークしてから実行してください。");
        return false;
    }

    var fileList = [];

    // 2. ファイルのみを抽出し、サイズを取得
    for (var i = 0; i < items.length; i++) {
        var relPath = items[i];

        // ディレクトリは除外
        if (!XFiler.IsDirectory(relPath)) {
            var size = XFiler.GetFileSize(relPath);
            if (size >= 0) {
                fileList.push({
                    name: relPath,
                    size: size
                });
            }
        }
    }

    if (fileList.length === 0) {
        XFiler.Log("対象となるファイルが見つかりませんでした。");
        return false;
    }

    // 3. ファイルサイズでソート（昇順）
    fileList.sort(function (a, b) {
        return a.size - b.size;
    });

    // 4. 結果をログに出力
    XFiler.Log("--- マークしたファイルのサイズ一覧 (昇順) ---");
    for (var i = 0; i < fileList.length; i++) {
        var f = fileList[i];
        // サイズをカンマ区切りで整形して表示
        var sizeStr = f.size.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
        XFiler.Log(sizeStr + " bytes : " + f.name);
    }

    return true;
});
