Как получить файлы, упорядоченные по имени с помощью `dir`?

298
Alex

Раньше это было действительно легко в старых ОС.

dir /o:n >> list.txt for %a in (`list.txt`) do copy %a ..\ordered 

И вуаля, там был список файлов в другой папке, созданный в отсортированном порядке. Таким образом, когда я делаю регулярные dir ..\ordered, файлы будут отображаться в порядке их имен файлов.

Это больше не работает в новых системах. Когда я выполняю вышеизложенное, в dir ..\orderedконечном итоге файлы отображаются в том же порядке, в котором они были в исходной папке.

Я попытался скопировать на другой диск. Файлы были скопированы по одному с использованием сценария в алфавитном порядке; Я даже сделал паузы между копиями, чтобы убедиться, что какое-то кэширование не заставляет их записывать на диск не по порядку. Однако, когда я выполняю dirкоманду, они снова отображаются не по порядку - на этот раз в другом порядке, чем в исходном каталоге. Однако копирование на один и тот же диск несколько раз приводит к тому же порядку на этом диске.

Я проверил, на каких атрибутах основан порядок сортировки dir, чтобы узнать, могу ли я подправить эти атрибуты. Я проверил следующие атрибуты

Date Date Accessed Date Created Date Last Saved Date Modified 

Сортировка по этим атрибутам никогда не давала того же порядка, что и dirкоманда.

Как переопределить это поведение и получить нестандартный порядок при запуске dir?

1
Во многих оболочках Linux можно определить псевдоним для введения желаемого параметра (например, `/ o: n`,` -on` или любой другой); или функция. Ну, в Linux можно переопределить `ls` с помощью собственного скрипта или программы. Я не знаю, как вам повезло в Windows в этой теме. Возможно, вы найдете решение здесь: [* Псевдонимы в командной строке Windows *] (https://stackoverflow.com/q/20530996). Kamil Maciorowski 5 лет назад 0
Нет, я определенно могу переопределить порядок списков в Windows. Проблема в том, что я затем копирую эти файлы в MP3-плеер, и порядок их отображения в точности соответствует порядку, который они показывают в функции * un-overridden * `dir`. MP3-плеер, чей порядок я не могу переопределить. Alex 5 лет назад 0
Примечание: [проблема XY] (https://meta.stackexchange.com/a/66378/355310). Kamil Maciorowski 5 лет назад 0
Какая файловая система? Может ли это быть «раньше было очень легко», потому что вы работали с дефрагментированной файловой системой (-ами)? Прочитайте [это] (https://blogs.msdn.microsoft.com/oldnewthing/20140304-00/?p=1603). Kamil Maciorowski 5 лет назад 1
@KamilMaciorowski Я сразу понял, что это проблема XY; но в этом случае, каким бы ни было успешное решение, способ проверить его успешность - запустить функцию `dir` и убедиться, что файлы находятся в правильном порядке. Так что я не вижу недостатка в том, чтобы спрашивать это так. Alex 5 лет назад 0
@KamilMaciorowski Уничтожение USB-плеера заставило работать «старый» метод, спасибо! Не стесняйтесь опубликовать это как ответ. Alex 5 лет назад 0
Я прохожу, так что вы можете ответить на свой вопрос, не крадя ни слова. Kamil Maciorowski 5 лет назад 0
Я планирую сделать это в конце концов, если никто не сделает; но в то же время я хотел бы сказать, что в конечном итоге произошло то, что порядок отображения соответствовал порядку на диске. Итак, моя общая стратегия закончилась, напишите большой файл, чтобы система нашла свободное смежное пространство; затем удалите этот файл и вместо него запишите мои файлы в алфавитном порядке. Поскольку система уже настроена для восстановления большого файла, она не ищет меньших промежутков, которые могут вместить некоторые из меньших файлов, и, следовательно, все файлы заканчиваются в алфавитном порядке. Alex 5 лет назад 0
См. [Этот комментарий] (https://superuser.com/q/1321460/432690#comment1969830_1321460). Kamil Maciorowski 5 лет назад 0

0 ответов на вопрос