Сортировать данные можно по множеству критериев — типу, содержимому, размеру, дате и времени создания, пользователю и так далее, и так далее. Например, у вас может возникнуть необходимость отсортировать файлы по расширению. Сделать это можно с помощью штатного поиска Windows: зайти в папку с файлами и ввести в поисковое поле запрос в виде шаблона «.расширение», после чего переместить найденные файлы в подготовленный загодя каталог.
Способ приемлем, когда в исходной папке имеются файлы двух или трех типов, если же типов много, то такая ручная сортировка вряд ли покажется вам приятной.
В таких случаях разумнее воспользоваться средствами командной строки, точнее, скриптом, написанным на языке командного интерпретатора CMD. Созданный скрипт идентифицирует расширения файлов в нужной папке, автоматически создаст папки с соответствующими названиями и переместит в них файл в соответствии с их расширениями.
Скачать командный файл BAT вы можете по ссылке disk.yandex.ru/d/1PYZkPHmIJ-7ZQ, а вот так он выглядит «изнутри».
@echo off
for %%a in (".\*") do (
if "%%~xa" NEQ "" if "%%~dpxa" NEQ "%~dpx0" (
if not exist "%%~xa" mkdir "%%~xa" (
move "%%a" "%%~dpa%%~xa\"
)
)
)
Простой цикл без рекурсии, добавление в переменную расширений, создание папок с именем переменной и перемещение в них файлов.
Поместите скрипт в папку с сортируемыми файлами и запустите.
Пару секунд — и всё будет сделано.
Все файлы, включая ярлыки, будут распределены по папкам с именами расширениям, нетронутыми останутся только сам скрипт и файлы без расширений.
На папку с именем «(» не обращайте внимания, она создается чисто для красоты, отключить ее создание можно в коде командного файла, убрав символ «(» в пятой строке.
В Win11 всё штатно и проще.
А возможно как-то в виндосе поменять порядок сортировки файлов по умолчанию?
У меня в папке два типа файлов:пдф и эксель. Названия у файлов одинаковые, для примера: А1.pdf, A1.xlsx, A2.pdf, A2.xlsx, A3.pdf, A3.xlsx и т.д. При этом по умолчанию файл с расширением пдф всегда идет первым, а мне нужно, чтобы он шел после файла эксель.
Спасибо. Замечательно но хотелось бы, чтобы и из подпопок можно было все файлы отсортировать.
Скобочку нужно переместить со строки где mkdir на строку где move. (чтоб не создавался каталог с названием скобка). А в остальном все отлично работает. Спасибо.
for %%a in (".\*") do (
if "%%~xa" NEQ "" if "%%~dpxa" NEQ "%~dpx0" (
if not exist "%%~xa" mkdir "%%~xa"
(move "%%a" "%%~dpa%%~xa\"
)
)
)