Сортировка и отображение файлов в папке по алфавиту.
Если в DOS BAT CMD окне или скриптовой программе запустить цикл FOR %%I IN (*.txt) для вывода текстовых файлов из папки - то можно с удивлением обнаружить, что иногда - вывод сортируется не по алфавиту, а каким-то иным способом, скорее всего - по дате создания файла (что, нужно заметить - крайне нелогично и неудобно) ...
Суть проблемы - указывает (но не объясняет) следующий список файлов и время : ...
ko.txt 15:09 (создан 15:07:54 , изменен 15:09:18 - то есть фактически используется время последнего изменения файла) ...
5g.txt 15:10 ...
ac.txt 15:11 ...
ap.txt 15:13 ...
bb.txt 15:17 ...
wi.txt 15:18 ...
re.txt 15:36 ...
ca.txt 15:37 ...
... и так далее ... совершенно ясно, что сортировка исполняется не по алфавиту, а по времени ...
Поэтому, на жестком диске, во временной (не системной) папке C:\Temp - я создал некий набор текстовых файлов, из имен / произвольных слов, по алфавиту и используя точно такой же командный файл - проверяю что теория - подтверждается ... Но - не тут-то было ... Сортировка происходит идеально ... Вывод имен файлов папки командой FOR происходит по алфавиту ...
Тогда, я - удваиваю количество файлов, создавая их от Z к A, то есть - в обратном порядке времени ... И ... Независимо от даты создания и изменения файла - вывод все равно происходит по алфавиту ...
... И, в порядке отображения - ничего не изменяется ... Время - не влияет на вывод сортировки файлов в алфавитном порядке командой / циклом FOR ... Парадоксально ... Потому-что я неоднократно видел, как файлы - режутся посередине алфавитного списка и, сначала - обрабатывается вторая часть ; а, затем - первая ... Но, чтобы - вот так, вразброд, как в первом примере ... Это и заинтриговало / заинтересовало разобраться в причинах такого поведения ...
Тогда я подставляю к этому BAT CMD сценарию - сбойный набор файлов, и, о чудо : он сортируется совершенно нормально ... В этом случае, тот же самый код, тот же самый набор файлов - сортирует по алфавиту ...
Кажется - я начинаю догадываться о причине происходящих событий ... Все предыдущие примеры - выполнялись правильно на NTFS HDD жестком диске, в папке C:\Temp ... А, теперь - переместимся на USB флэшку и посмотрим, как там обстоит дело с алфавитной сортировкой ... В отличие от HDD - на USB Flash файлы сортируются совершенно невменяемым образом ...
# ... unixforum.org, MP3 плейеры и автомагнитолы - не сортируют, а играют файлы в том порядке, в каком они записаны на флэш.
... Да ... Да ... Меня тоже, это всегда, просто - выбешивало ... Виноват - костыль в виде FAT32 ... С этим утверждением - я могу согласиться ... Действительно, на флэшке установлена фат32, и именно, по тому поводу, что NTFS - жутко тормозила ... Вот, что по этому поводу - говорят на конференции ...
# ... ixbt.com, Сравнение быстродействия USB Flash, файловая система, FAT32 vs NTFS.
... Только в сложных высокопроизводительных системах - например, на графических станциях или просто на серьезных офисных компьютерах с тысячами документов, или, тем более, на файл-серверах - преимущества структуры NTFS смогут дать реальный выигрыш быстродействия, который порой заметен невооруженным глазом ... Пользователям, не имеющим большие диски, забитые информацией, и не пользующимся сложными программами - не стоит ждать от NTFS чудес скорости ... С точки зрения быстродействия, на простых домашних системах, гораздо лучше покажет себя - FAT32 ...
Позволю себе частично не согласится с указанным заявлением о скорости и быстродействии работы флэшки в NTFS ... Лично я - уважаю NTFS и продолжаю ее многолетнее использование на ПК ... Однако ... Именно из-за избыточной надежности, записи в поток файла, зеркалирования файловых таблиц или чем там она еще промышляет ... Именно - на флэшке, с тысячами маленьких, но постоянно модифицируемых и частично автоматически перезаписываемых файлов - NTFS жутко тормозила, чем и способствовала ускоренному обратному переходу на стандартную FAT32, которая сразу же показала значительный выигрыш в скорости и быстродействии ... Конечно, я могу оговорится, что это было выявлено в свете моих задач, файловых операций и длительного тестирования ... Однако - каждый сам может проверить, какая из файловых систем подходит для его флэш - наилучшим образом, и применить ее для дальнейшего использования ...
Продолжим изыскания ... Прежде, чем принудительно заставить команду FOR выводить алфавитный список требуемых файлов - как ни странно, сначала нужно разобраться, как работает команда DIR ...
Ключи командной строки программы DIR подробно описаны в справочном руководстве, вызываемом кодом dir /? и нажатием клавиши Enter ... Я же - хотел углубится в различия между руководством из справки и фактическими особенностями применения / использования ключей утилиты отображения списков файлов и папок, находящихся на жестком диске компьютера / ПК ... Для простоты восприятия примеры действия командных ключей будут сопровождаться картинками ...
Команда DIR ... Стандартное использование ... Неудобство использования вызывает подмена названий системных папок, из символьных имен национальных языков компьютера - в оригинальные / англоязычные наименования ...
Предполагается, что работа команды DIR, без указания пути - выполнится в текущей папке, а без указания опций / ключей - с поведением вывода : по умолчанию ... Отображаются : дата создания / изменения, время и название каталогов (папок) ... В теории - еще должны выводится и имена файлов, но Users / Пользователи - это практически системный каталог Windows и там не приветствуется расположение ненужных / лишних файлов (поэтому их там и нет) ... Ещё, примеры ... Contacts - папка Контакты (в русской национальной версии ОС), Favorites - Ссылки, Downloads - Загрузки, и - так далее (сейчас это не столь существенно) ...
Что будет, как изменится отображение файлов папки, если добавить ключ /B ? ... Вывод только имен файлов ... Команда DIR с ключом B - ничего лишнего, только имена папок и файлов ...
Отлично ... А вот теперь - приближаемся к самому интересному ... Насколько я правильно понимал применение ключей с атрибутами - по справочной информации это выглядело, как /A:D ... Ключ /A - отображать файлы только с указанными атрибутами, в частности :D - показывать только каталоги ... Однако, как оказалось - это не единственная форма применимой записи, также - разрешается и без двоеточия (что, для меня действительно стало открытием) ... Например, так : /AD - отображать только каталоги ... Или (минус, знак отрицания) : /A-D - не отображать каталоги (отображать все, кроме каталогов) ... Кроме, того - ключ /AD несет и более глубокую информативно информационную нагрузку, а именно - показывает системные папки, которые не отображаются обычным образом ... Ключ AD команды DIR дополнительно отображает системные каталоги ... Вот вам : и AppData, Application Data, Куки, капоты Net и Print ... Соответственно, ключи /B /A-D - покажут защищенные системные файлы (других нет в этой папке) ... Запрет отображения каталогов вынуждает команду DIR показывать защищенные системные файлы ...
Хорошо, с этим разобрались ... Напомню, что мы работаем с флэшкой а не с авто магнитолой, и теперь можно вплотную подходить к методу принудительной сортировки имен вывода файлов ... Кстати, ключ порядка сортировки - может иметь боле одного атрибута ... /O:N или /ON - по имени (по алфавиту) ... /ONE - это не единица ; это сортировка по имени, а затем - по расширению ... Соответственно, наоборот /OEN - сортировка сначала по расширению, затем по имени файла (если идет одновременный опрос документов с разными расширениями) ...
Сам скрипт, позволяющий объединить возможности сортировки DIR и циклического вывода FOR - указан в источнике, где об этом можно узнать подробнее, в оригинале ...
# ... stackoverflow.com, Пакетные скрипты, сортировка папок и файлов по алфавиту.
...
Приведу только саму строчку кода, которая должна помочь нам получить требуемый результат ...
FOR /F "delims=" %%I IN ('dir /b /o:n *.txt') DO (ECHO %%I)
И, конечно - показать, что этот способ / метод - работает, как Отче наш ... Как - бабушка отшептала ... Все файлы - как солдаты, на строевом смотре, перед парадом - отсортированы по ранжиру, весу, жиру ))) ... Сочетание команд DIR и FOR легко позволяет сортировать и обрабатывать файлы на FAT32 флэшке - по алфавиту ...
Таким образом, у пользователей Windows - есть возможность получить сортированный по алфавиту вывод имен файлов и произвести их дополнительную обработку ... Однако ... Сейчас - нет под рукой Windows с HDD FAT32, но (насколько я помню) - операционка нормально отображает по / алфавитную сортировку файловых имен на экране, а вот уже копирование - может происходить особым образом ... Вот этот (особый образ) - видимо и есть баг или ограничение контроллера жесткого диска при взаимодействии с файловой системой фат32 ... Но, дальше, я уже углубляться не собираюсь, так как основная цель (обработки файлов по алфавиту имен) - уже была достигнута ...
Раздел computer : список всех страниц ...