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

Кличко

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

Master4eg

Client
Регистрация
06.04.2016
Сообщения
421
Благодарностей
122
Баллы
43
Хм, можно с помощью C# получить вес в байтах:

Код:
return new System.IO.FileInfo(project.Variables["file"].Value).Length;
Далее добавить данные в таблицу. В Столбец "A" название файла, в столбец "B" размер файла. А потом уже кубиком отсортировать по возрастанию или убыванию по столбцу B. Немного костыльно выходит.
 

Кличко

Пользователь
Регистрация
22.03.2019
Сообщения
103
Благодарностей
5
Баллы
18
Вот команда cmd

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

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

Master4eg

Client
Регистрация
06.04.2016
Сообщения
421
Благодарностей
122
Баллы
43
Вот команда cmd

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

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

Кличко

Пользователь
Регистрация
22.03.2019
Сообщения
103
Благодарностей
5
Баллы
18
неа, exit код это просто ошибка или норм
 

Кличко

Пользователь
Регистрация
22.03.2019
Сообщения
103
Благодарностей
5
Баллы
18
Итак, вот решение. Имеется папка с текстовыми файлами

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

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

Код:
set dir %cd%
(for /f "delims=" %%a in ('dir /B /O-S *.txt') do @echo %%~na) > RESULT.txt
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 657
Благодарностей
1 323
Баллы
113
Командная строка cmd наше все, зачем эти батники? А cmd в c# с параметрами запускается на ура! Как? Гугля и ютуб в помощь! Хотя в версии c# который сейчас в зенке может и не сработать! Если что просите разработчиков обновить C# в зенке!
 
Последнее редактирование:

Кличко

Пользователь
Регистрация
22.03.2019
Сообщения
103
Благодарностей
5
Баллы
18
Командная строка cmd наше все, зачем эти батники? А cmd в c# с параметрами запускается на ура! Как? Гугля и ютуб в помощь!
Зачем твое решето? Есть кубик запуск программы.
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 657
Благодарностей
1 323
Баллы
113

Кличко

Пользователь
Регистрация
22.03.2019
Сообщения
103
Благодарностей
5
Баллы
18

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 657
Благодарностей
1 323
Баллы
113

Кличко

Пользователь
Регистрация
22.03.2019
Сообщения
103
Благодарностей
5
Баллы
18

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 657
Благодарностей
1 323
Баллы
113

Кличко

Пользователь
Регистрация
22.03.2019
Сообщения
103
Благодарностей
5
Баллы
18

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 657
Благодарностей
1 323
Баллы
113

Кличко

Пользователь
Регистрация
22.03.2019
Сообщения
103
Благодарностей
5
Баллы
18
тему почистят либо удалят за ненадобностью, а вы так и не поняли в чем прикол!
Ни одного полезного сообщения от тебя я не увидел. А послать в гугл любой может, притом флудить после того как уже появилось решение ...
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 657
Благодарностей
1 323
Баллы
113
Ну раз уже вы ко мне на ты, до свидания... И по теме сейчас кличко х...ло! так что не мешает поменять аву!
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Ума не приложу почему эта тема была мне рекомендована хД

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

Вложения

  • Спасибо
Реакции: diman

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 765
Благодарностей
2 407
Баллы
113
Ума не приложу почему эта тема была мне рекомендована хД
Смотря какая у Вас задача была.
Если цель отсортировать пути к файлам - тогда всё корректно.
Если же Вы хотели в результате наблюдать сортировку файлов в проводнике в нужном порядке - думаю что не решит проблему.

В целом, демонстрационный пример добавлю:
Сортировка файлов по размеру с возвратом путей в переменную:
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

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Смотря какая у Вас задача была.
Если цель отсортировать пути к файлам - тогда всё корректно.
Если же Вы хотели в результате наблюдать сортировку файлов в проводнике в нужном порядке - думаю что не решит проблему.

В целом, демонстрационный пример добавлю:
Сортировка файлов по размеру с возвратом путей в переменную:
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

Client
Регистрация
08.11.2015
Сообщения
1 765
Благодарностей
2 407
Баллы
113
Почему нет-то? Как раз сортировка в порядке возрастания размера файла и путь полный к файлам выдает в список )
Видимо я не понял скриншот в Вашем сообщении.
Если сортировать пути к файлам (список путей) - тогда всё ок - полный порядок.
Но, исходя из скриншота, я подумал, что Вы хотите отсортировать файлы в зенке, а потом зайти в папку с файлами, и чтобы винда показала Вам файлы в этом порядке (в котором его отсортировала зенка) - вот так сделать не получится.
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Видимо я не понял скриншот в Вашем сообщении.
Если сортировать пути к файлам (список путей) - тогда всё ок - полный порядок.
Но, исходя из скриншота, я подумал, что Вы хотите отсортировать файлы в зенке, а потом зайти в папку с файлами, и чтобы винда показала Вам файлы в этом порядке (в котором его отсортировала зенка) - вот так сделать не получится.
Та я вообще ничего не хотел, объява не моя, я просто велосипед бросил))))

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

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