отсортировать список файлов по размеру

Кличко

Пользователь
Регистрация
22.03.2019
Сообщения
103
Реакции
5
Баллы
18
1. Получаем список файлов (можно кубиком)
2. Сортируем его по размеру файлов
 
Хм, можно с помощью C# получить вес в байтах:

Код:
Развернуть Свернуть Копировать
return new System.IO.FileInfo(project.Variables["file"].Value).Length;

Далее добавить данные в таблицу. В Столбец "A" название файла, в столбец "B" размер файла. А потом уже кубиком отсортировать по возрастанию или убыванию по столбцу B. Немного костыльно выходит.
 
Вот команда cmd

forfiles /c "cmd /c echo @file @fsize"

Показывает список файлов и их размер, как записать в файл это? Ну т.е. для батника код сделать.
 
Вот команда cmd

forfiles /c "cmd /c echo @file @fsize"

Показывает список файлов и их размер, как записать в файл это? Ну т.е. для батника код сделать.
Безымянный.png
Мб так сработает, укажешь путь до bat Файла. И переменную куда возвращать
 
неа, exit код это просто ошибка или норм
 
Итак, вот решение. Имеется папка с текстовыми файлами

1) Мы получаем список этих файлов
2) Сортируем их по размеру от самого большого к самому маленькому
3) в файл записываем названия файлов (без расширения .txt)

Батник закидываем в папку с файлами, ничего не надо прописывать в коде

Код:
Развернуть Свернуть Копировать
set dir %cd%
(for /f "delims=" %%a in ('dir /B /O-S *.txt') do @echo %%~na) > RESULT.txt
 
Командная строка cmd наше все, зачем эти батники? А cmd в c# с параметрами запускается на ура! Как? Гугля и ютуб в помощь! Хотя в версии c# который сейчас в зенке может и не сработать! Если что просите разработчиков обновить C# в зенке!
 
Последнее редактирование:
Командная строка cmd наше все, зачем эти батники? А cmd в c# с параметрами запускается на ура! Как? Гугля и ютуб в помощь!

Зачем твое решето? Есть кубик запуск программы.
 
тему почистят либо удалят за ненадобностью, а вы так и не поняли в чем прикол!

Ни одного полезного сообщения от тебя я не увидел. А послать в гугл любой может, притом флудить после того как уже появилось решение ...
 
Ума не приложу почему эта тема была мне рекомендована хД

var x = Directory.GetFiles(@"C:\php\").OrderBy(e=>new FileInfo(e).Length).ToList();
project.Lists["x"].AddRange(x);
 

Вложения

  • 2021-01-10_20-24-59.png
    2021-01-10_20-24-59.png
    12,1 KB · Просмотры: 175
  • Спасибо
Реакции: diman
Ума не приложу почему эта тема была мне рекомендована хД
Смотря какая у Вас задача была.
Если цель отсортировать пути к файлам - тогда всё корректно.
Если же Вы хотели в результате наблюдать сортировку файлов в проводнике в нужном порядке - думаю что не решит проблему.

В целом, демонстрационный пример добавлю:
Сортировка файлов по размеру с возвратом путей в переменную:
Развернуть Свернуть Копировать
string path = Path.Combine(project.Directory, "data"); // Путь к папке с файлами
if(!Directory.Exists(path)) Directory.CreateDirectory(path); // Создаю папку, если её нет
List<string> files = Directory.GetFiles(path).ToList(); // Прочитаем все файлы в папке

if(files.Count == 0) { // Если файлов нет - создадим
    Random rand = new Random();
    string[] file_name = new[]{"1.txt", "2.txt", "3.txt"}; // Имена потенциальных файлов
    foreach( string name in file_name) {
        string temp_path = Path.Combine(path, name);
        string line = string.Empty;
        int rand_count = rand.Next(10);
        for(int i=0;i<rand_count;i++) line+=string.Format(@"{0}{1}", line, rand.Next(10));
        File.WriteAllText(temp_path, line);
        project.SendInfoToLog(string.Format(@"Создали файл: {0}", temp_path));
    }
    files = Directory.GetFiles(path).ToList();
    project.SendInfoToLog(string.Format(@"Получили список путей: {0}", files.Count));
}

project.SendInfoToLog("Начальная сортировка:");
for(int i=0;i<files.Count;i++) {
    project.SendInfoToLog(string.Format(@"Порядок: {0} Размер: {1} Путь: {2}",i, new System.IO.FileInfo(files[i]).Length, files[i]));
}

project.SendInfoToLog("Отсортировали по размеру:");
files = files.OrderBy(x=> new System.IO.FileInfo(x).Length).ToList();

for(int i=0;i<files.Count;i++) {
    project.SendInfoToLog(string.Format(@"Порядок: {0} Размер: {1} Путь: {2}",i, new System.IO.FileInfo(files[i]).Length, files[i]));
}

return string.Join("\n",files); // Возвращаем результат в переменную

70484
 

Вложения

  • Спасибо
Реакции: udder, Petr_G и Sergodjan
Смотря какая у Вас задача была.
Если цель отсортировать пути к файлам - тогда всё корректно.
Если же Вы хотели в результате наблюдать сортировку файлов в проводнике в нужном порядке - думаю что не решит проблему.

В целом, демонстрационный пример добавлю:
Сортировка файлов по размеру с возвратом путей в переменную:
Развернуть Свернуть Копировать
string path = Path.Combine(project.Directory, "data"); // Путь к папке с файлами
if(!Directory.Exists(path)) Directory.CreateDirectory(path); // Создаю папку, если её нет
List<string> files = Directory.GetFiles(path).ToList(); // Прочитаем все файлы в папке

if(files.Count == 0) { // Если файлов нет - создадим
    Random rand = new Random();
    string[] file_name = new[]{"1.txt", "2.txt", "3.txt"}; // Имена потенциальных файлов
    foreach( string name in file_name) {
        string temp_path = Path.Combine(path, name);
        string line = string.Empty;
        int rand_count = rand.Next(10);
        for(int i=0;i<rand_count;i++) line+=string.Format(@"{0}{1}", line, rand.Next(10));
        File.WriteAllText(temp_path, line);
        project.SendInfoToLog(string.Format(@"Создали файл: {0}", temp_path));
    }
    files = Directory.GetFiles(path).ToList();
    project.SendInfoToLog(string.Format(@"Получили список путей: {0}", files.Count));
}

project.SendInfoToLog("Начальная сортировка:");
for(int i=0;i<files.Count;i++) {
    project.SendInfoToLog(string.Format(@"Порядок: {0} Размер: {1} Путь: {2}",i, new System.IO.FileInfo(files[i]).Length, files[i]));
}

project.SendInfoToLog("Отсортировали по размеру:");
files = files.OrderBy(x=> new System.IO.FileInfo(x).Length).ToList();

for(int i=0;i<files.Count;i++) {
    project.SendInfoToLog(string.Format(@"Порядок: {0} Размер: {1} Путь: {2}",i, new System.IO.FileInfo(files[i]).Length, files[i]));
}

return string.Join("\n",files); // Возвращаем результат в переменную

Посмотреть вложение 70484

Почему нет-то? Как раз сортировка в порядке возрастания размера файла и путь полный к файлам выдает в список )
 
Почему нет-то? Как раз сортировка в порядке возрастания размера файла и путь полный к файлам выдает в список )
Видимо я не понял скриншот в Вашем сообщении.
Если сортировать пути к файлам (список путей) - тогда всё ок - полный порядок.
Но, исходя из скриншота, я подумал, что Вы хотите отсортировать файлы в зенке, а потом зайти в папку с файлами, и чтобы винда показала Вам файлы в этом порядке (в котором его отсортировала зенка) - вот так сделать не получится.
 
Видимо я не понял скриншот в Вашем сообщении.
Если сортировать пути к файлам (список путей) - тогда всё ок - полный порядок.
Но, исходя из скриншота, я подумал, что Вы хотите отсортировать файлы в зенке, а потом зайти в папку с файлами, и чтобы винда показала Вам файлы в этом порядке (в котором его отсортировала зенка) - вот так сделать не получится.

Та я вообще ничего не хотел, объява не моя, я просто велосипед бросил))))

Теперь понятно к чему всё это))
 
  • Спасибо
Реакции: BAZAg

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)