Сортировка файлов в командной строке windows

on December 26, 2011

We can sort a text file using the windows inbuilt sort command. Below you can find the syntax of sort command.

Sort a text file:

A text file can be sorted using the below simple command.

sort filename

For example, to sort the file data.txt, the command would be
sort data.txt

The above command prints the sorted contents of the file in the console. To save the output into another file, you can use
/o switch as shown below.

sort filename /o outputfile

Example:

sort data.txt /o sorteddata.txt

Alternatively, you can user redirection operator.

sort data.txt > sorteddata.txt

Advanced options for sorting:

Sort the contents in reverse order

sort /R filename /o outputfile

If you are sorting big files, then /M switch will help you to finish the sorting quickly. Be default, sort command uses only 160 KB of space to store the file contents in main memory. Increasing this limit, will increase the performance of the sort operation. To let the sort command use 10MB of memory, we can run the below command.

sort /M 10240 data.txt /o sorteddata.txt

The following code displays file names in a directory and sub-directories and puts the results into results.txt. I am having trouble sorting the list. Where do I put the sort option?

for /r %i in (*) do @echo %~ni >> results.txt

Ross Ridge's user avatar

Ross Ridge

38.5k7 gold badges81 silver badges113 bronze badges

asked Sep 11, 2015 at 19:32

user1854438's user avatar

Use the dir command:

dir /ON /B >> results.txt

The /ON sorts by name.

The /B returns in «Bare» (name only) format.

If you add /S it will recurse all sub-directories, but will include the file path.

answered Sep 11, 2015 at 19:54

Brian Pressler's user avatar

Brian PresslerBrian Pressler

6,6532 gold badges19 silver badges40 bronze badges

You’ll need to do the sort later, once the results are written to the text file. Add a second line to your batch file reading:

sort results.txt

The results will be written back to results.txt. Alternatively you can get it to go faster by using

sort /O:NewResults.txt results.txt

And getting it to write to a different file.

answered Sep 11, 2015 at 20:03

Paul Drye's user avatar

Paul DryePaul Drye

3461 silver badge5 bronze badges

3

This can be done with a single line:

(for /r %i in (*) do @echo %~ni)|sort /o results.txt 

writing the output to a file with sort switch /o is faster than redirecting sort > file.txt

Only one file gets written, so it should be even faster.

(Note: this is command line syntax. For use in a batchfile, replace each %i with %%i)

answered Jul 23, 2018 at 13:51

Stephan's user avatar

StephanStephan

54.2k10 gold badges58 silver badges93 bronze badges

Считывает поступающую информацию и осуществляет её сортировку. Предполагается несколько вариантов выдачи результатов работы команды. Сюда следует отнести загрузку в документ, на экран или отправку на другой компьютер.

Синтаксис

sort [/r] [/+n] [/m кб] [/l язык] [/rec символы] [[диск_компьютера_1:][расположение_1]название_файла_1] [/t [диск_компьютера_2:][расположение_2]] [/o [диск_компьютера_3:][расположение_3]название_файла_3] 

Расшифровка значений

/r

Проводится изменение порядка сортировки. Она проводится по алфавиту от буквы Z до A и числам от 9 до 0.

/+n

Задает номер позиции для символа. Именно начиная с него команда будет осуществлять сравнение.

/m кб

Здесь задаются объемы памяти, которая должна быть применена для проведения сортировки. Данное количество измеряется в килобайтах.

/l язык

Переустанавливает порядок выполнения задачи по сортировке символов, который определяется языком системы. Подобные настройки должны обеспечиваться заранее.

/rec символы

В данном параметре необходимо написать число, которое будет означать наибольшее количество символов в записи входного документа. Предусматривается установка от 1 до 65535. Если ничего не прописывать, система задаст число 4096.

[диск_компьютера_1:][расположение_1]название_файла_1

Задает документ, подлежащий процедуре сортировки. Можно не устанавливать название и тогда будет происходить сортировка обычного ввода. Если задать некоторый входной документ, то sort позволит обеспечить более быструю работу.

/t [диск_компьютера_2:][расположение_2]

В качестве данного параметра необходимо прописать каталог, где будет осуществляться хранение сведений sort, когда для данной задачи не применяется основная память. Если ничего не указывать, то будет образован временный системный каталог.

/o [диск_компьютера_3:][путь3]название_файла_3

Устанавливает документ, где будет производиться хранение отсортированных сведений ввода. Без конкретных указаний, предусматривается запись классического вывода.

/?

Появляются справочные сведения по команде.

Настройка

  • Microsoft Windows 2000
  • Microsoft Windows XP
  • Microsoft Windows Servers
  • Microsoft Windows Vista
  • Microsoft Windows 7
  • Microsoft Windows 8
  • Microsoft Windows 10

Полезная информация

  • Синий экран смерти (BSOD)
    • Коды ошибок
    • Способы устранения
  • Командная строка (CMD)
    • Переменные
    • Команды
    • Примеры bat файлов
  • Примеры Rundll32.exe
  • Windows Script Host (WSH)
    • Объект WshShell
    • Объект FileSystemObject
    • Объект RegExp
    • Объект Dictionary
    • Объект Shell
    • Константы VBScript
    • Функции VBScript
    • Объект IE и WebBrowser
    • Объект WScript
    • Объект WshNetwork
  • Basic In/Out System (BIOS)
    • AMI bios
    • AWARD bios
    • Phoenix bios
    • UEFI bios
  • Реестр Windows
    • Хитрости реестра Windows
  • Скачать Live CD
  • Полезные статьи
    • Часто задаваемые вопросы
    • Стоит ли переходить на Windows 10?
    • Не открывается флешка на компьютере?
    • Как разбить жесткий диск на разделы?
    • Удалить баннер с рабочего стола
    • Лучшие бесплатные антивирусы 2016-2017 года
    • Не открывается Вконтакте и другие сайты
    • Как убрать всплывающие сайты и рекламу в браузере

Перевод документации Microsoft TechNet, где описаны основные принципы работы с командной строкой.

Командная оболочка — это отдельный программный продукт, который обеспечивает прямую связь между пользователем и операционной системой. Текстовый пользовательский интерфейс командной строки предоставляет среду, в которой выполняются приложения и служебные программы с текстовым интерфейсом. В командной оболочке выполняются программы и результат выполнения отображается на экране в виде, сходном с интерпретатором Command.com MS-DOS. Командная оболочка операционной системы W2K использует для перевода введенной команды в формат, понятный системе, интерпретатор команд Cmd.exe, который загружает приложения и распределяет поток данных между приложениями.

Имеется возможность использовать командную оболочку для создания и редактирования пакетных файлов (также называемых сценариями, обычно пишутся на Basic, расширение файла vbs), что позволит автоматизировать выполнение обычных задач. Например, сценарии можно использовать для автоматизации управления учетными записями пользователей и ежедневной архивацией в нерабочие часы. Также можно использовать вариант сервера сценариев Windows, запускаемый из командной строки — CScript.exe (или GUI-версия wscript.exe), чтобы выполнить в командной оболочке более сложные сценарии.

Если запустить файл сценария (например, двойным щелчком или из командной строки), то по умолчанию используется wscript.exe (это поведение по умолчанию можно изменить, см. подсказку по команде CScript.exe, она выводится, если запустить CScript.exe без параметров).
Выполнение операций с помощью пакетных файлов является более эффективным, чем с помощью интерфейса пользователя. Пакетные файлы принимают все команды, доступные из командной строки.

Имеется возможность настроить окно командной строки для облегчения просмотра и для увеличения контроля за выполнением программ (системное меню консоли командной строки, Свойства).

1. Запуск командной строки — Пуск\Выполнить…\cmd
2. Выход из командной строки — exit.
3. Если набрать в командной строке cmd и нажать Enter, то запускается вложенный интерпретатор cmd, т. е. теперь для выхода надо дважды набрать команду exit.
4. Можно использовать операторы перенаправления команд (см. далее).

Операторы перенаправления команд используются для изменения местоположений потоков ввода и вывода команд, заданных по умолчанию, на какие-либо другие. Местоположение потоков ввода и вывода называется дескриптором.

В следующей таблице представлены доступные дескрипторы.

Дескриптор Числовой эквивалент дескриптора Описание
STDIN 0 Ввод с клавиатуры.
STDOUT 1 Вывод в окно командной строки.
STDERR 2 Вывод ошибок в окно командной строки.
UNDEFINED 3 .. 9 Дескрипторы определяются индивидуально для каждой прикладной программы.

Номера от 0 до 9 представляют первые 10 дескрипторов. Для запуска программы и перенаправления любого из 10 дескрипторов используется интерпретатор команд Cmd.exe. Для задания требуемого дескриптора перед оператором перенаправления введите его номер. Если дескриптор не определен, то по умолчанию оператором перенаправления ввода «<» будет ноль (0), а оператором перенаправления вывода «>» будет единица (1). После ввода оператора «<» или «>» необходимо определить, откуда нужно читать или куда нужно записывать данные. Можно задать имя файла или любой из существующих дескрипторов.

Чтобы определить перенаправление для существующих дескрипторов, используйте знак амперсанд (&), за которым идет номер перенаправляемого дескриптора (то есть, &номер_дескриптора). Например, для перенаправления дескриптора 2 (STDERR) в дескриптор 1 (STDOUT) введите:
2>&1

В следующей таблице описаны операторы перенаправления потоков ввода и вывода.

Оператор перенаправления Описание
> Записывает данные на выходе команды вместо окна командной строки или дескриптора в файл или на устройство, например, на принтер.
< Читает поток входных данных команды из файла, а не с клавиатуры или дескриптора.
>> Добавляет выходные данные команды в конец файла, не удаляя при этом существующие данные файла.
>& Считывает данные на выходе одного дескриптора как входные данные для другого дескриптора.
<& Считывает входные данные одного дескриптора как выходные данные другого дескриптора.
| Считывает выходные данные одной команды и записывает их на вход другой команды. Эта процедура известна под названием «канал».

По умолчанию входные данные команды (дескриптор STDIN) отсылаются с клавиатуры интерпретатору команд Cmd.exe, и Cmd.exe отправляет выходные данные команды (дескриптор STDOUT) в окно командной строки.

Перенаправление ввода (<). Чтобы перенаправить вход с клавиатуры в файл или на устройство, используйте оператор «<». Например, для ввода данных в команду sort из файла File.txt введите:
sort

Содержимое файла File.txt появится в командной строке в виде списка в алфавитном порядке.
Оператор «<» открывает файл с заданным именем только для чтения. Поэтому с его помощью нельзя записывать в файл. Например, при запуске программы с помощью перенаправления <&2 все попытки прочитать дескриптор 0 заканчиваются неудачей, так как дескриптор 2 первоначально открыт с доступом только для чтения.

Примечание: 0 это дескриптор по умолчанию для оператора перенаправления ввода <.

Перенаправления вывода (>). Выходные данные практически всех команд высвечиваются в окне командной строки. Даже команды, выводящие данные на диск или принтер, выдают сообщения и запросы в окне командной строки. Чтобы перенаправить вывод из окна командной строки в файл или на устройство, используется оператор «>». Этот оператор используется с большинством команд. Например, для перенаправления вывода команды dir в файл dirlist.txt введите:

Если файл dirlist.txt не существует, интерпретатор команд Cmd.exe создаст его. Если файл существует, Cmd.exe заменит информацию в файле на данные, полученные от команды dir.

Для запуска команды netsh routing dump и отправки результатов ее работы в файл Route.cfg введите:

netsh routing dump>c:\route.cfg

Оператор > открывает указанный файл только для записи. Поэтому с помощью данного оператора файл прочитать нельзя. Например, при запуске программы с перенаправлением >&0 все попытки записать дескриптор 1 заканчиваются неудачей, так как дескриптор 0 первоначально открыт с доступом только для чтения.

Примечание: 1 является дескриптором по умолчанию для оператора перенаправления вывода >.

Дублирование дескрипторов. Оператор перенаправления & дублирует выходные или входные данные с одного заданного дескриптора на другой заданный дескриптор. Например, для отправки выводимых данных команды dir в файл File.txt и отправки ошибки вывода в файл File.txt введите:

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

Использование оператора & для перенаправления ввода и дублирования. Чтобы использовать оператор перенаправления ввода (<) с оператором дублирования (&), указанный файл должен существовать. Если входной файл существует, Cmd.exe открывает его только для чтения и отправляет его содержимое в файл, как если бы ввод выполнялся с клавиатуры. При задании дескриптора интерпретатор команд Cmd.exe дублирует его в дескриптор, существующий в системе.

Например, для считывания файла File.txt на вход в дескриптор 0 (STDIN) введите:

Для открытия файла File.txt, сортировки его содержимого и последующей отправки в окно командной строки (т. е. в поток STDOUT) введите:

Для того чтобы найти файл file.txt и перенаправить дескриптор 1 (STDOUT) и дескриптор 2 (STDERR) в search.txt введите:

findfile file.txt > search.txt 2 < &1

Для дублирования определенного пользователем дескриптора 3 в качестве входной информации для дескриптора 0 (STDIN) введите:

Использование оператора & для перенаправления вывода и дублирования. При перенаправлении вывода в файл и задании существующего имени файла интерпретатор команд Cmd.exe открывает файл с доступом только для записи и переписывает его содержимое. Если дескриптор задан, интерпретатор команд Cmd.exe дублирует файл в существующий дескриптор. Для дублирования определенного пользователем дескриптора 3 в дескриптор 1 введите:

Для перенаправления всех выходных данных, включая выходные данные дескриптора 2 (поток STDERR), из команды ipconfig в дескриптор 1 (поток STDOUT) и последующего перенаправления выходных данных в файл Output.log, введите:

ipconfig.exe >> output.log 2 > &1

Использование оператора >> для добавления вывода. Для добавления вывода в файл без потери содержащихся в нем данных используется двойной символ «больше» (то есть >>). Например, следующая команда добавляет список каталогов, созданный командой dir, в файл dirlist.txt:

Для добавления выходных данных команды netstat в конец файла tcpinfo.txt введите:

Использование оператора канала (|) — pipe. Оператор канала «вертикальная линия» (|) забирает выходные данные одной команды (по умолчанию STDOUT) и направляет их на вход другой команды (по умолчанию STDIN). Например, следующая команда сортирует каталог:

В данном примере обе команды запускаются одновременно, но команда sort приостанавливает работу до получения выходных данных команды dir. Команда sort использует выходные данные команды dir в качестве своих входных данных, а затем свои выходные данные отправляет в дескриптор 1 (STDOUT).

Комбинирование команд с операторами перенаправления. Комбинируя команды-фильтры с другими командами и именами файлов, можно создавать команды на заказ. Например, для сохранения имен файлов, содержащих строку «log», используется следующая команда:

dir /b | find "log" loglist.txt

Выход команды dir отсылается в команду-фильтр find. Имена файлов, содержащие строку «LOG», хранятся в файле loglist.txt в виде списка (например, NetshConfig.log, Logdat.svd и Mylog.bat).

При использовании более одного фильтра в одной команде их необходимо отделять с помощью канала (|). Например, следующая команда ищет в каждом каталоге диска C файлы, в названии которых присутствует строка «Log», и выводит их постранично на экран:

dir c:\ /s /b | find "log" | more

Наличие канала (|) указывает Cmd.exe, что выход команды dir нужно отправить команде-фильтру find. Команда find выбирает только те имена файлов, в которых содержится строка «LOG». Команда more выводит на экран имена файлов, полученные командой find с паузой после заполнения каждого экрана.

5. Для командной строки возможно использование фильтров, что позволяет управлять выводом информации. Всего есть 3 команды-фильтра:

More     Отображает содержимое файла или вывода команды в одном окне командной строки за раз.
Find     Поиск указанных символов в файлах и выходе команды.
Sort     Сортировка файлов и выхода команды по алфавиту.

 6. Использование нескольких команд и символов условной обработки.

Можно выполнять несколько команд из одной командной строки или сценария с помощью символов условной обработки. При использовании нескольких команд, содержащих символы условной обработки, выполнение команд, стоящих справа от символа условной обработки, будет проводиться в зависимости от результатов выполнения команды, стоящей слева от символа. Например, требуется, чтобы команда выполнялась, только если предыдущая команда не была выполнена успешно. Или требуется, чтобы команда выполнялась, только если предыдущая команда была выполнена успешно.

Для передачи нескольких команд можно использовать специальные символы, перечисленные в следующей таблице.

Символ Синтаксис Определение
& […] команда1 & команда2 Используется для разделения нескольких команд в одной командной строке. В Cmd.exe выполняется первая команда, затем вторая команда.
&& […] команда1 && команда2 Запускает команду, стоящую за символом &&, только если команда, стоящая перед этим символом, была выполнена успешно (вернула значение 0). В Cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая была выполнена успешно.
|| […] команда1 || команда2 Запускает команду, стоящую за символом ||, только если команда, стоящая перед символом || не была выполнена. В Cmd.exe выполняется первая команда. Вторая команда выполняется, только если первая не была выполнена (полученный код ошибки превышает ноль).
( ) […] (команда1 & команда2) Используется для группировки или вложения команд.
; или , команда1 параметр1;параметр2 Используется для разделения параметров команды.

Примечания:

• Амперсанд (&), вертикальная черта (|) и скобки ( ) являются специальными символами, которым должен предшествовать управляющий символ (^) или кавычки, если эти символы передаются в качестве аргументов.
• Если команда завершает операцию успешно, возвращается нулевой (0) код ошибки или не возвращается никакого кода. Дополнительные сведения о кодах завершения см. в разделе Использование пакетов Windows Deployment Kit и Windows Resource Kit.

7. Использование оператора канала (|) в скрипте vbs. Создайте файл test.vbs с таким содержимым:

Наберите в командной строке:

cscript test.vbs //Nologo | cmd

После нажатия Enter запустится калькулятор.

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

  • Содержание статьи
    • Использование команды more
    • Использование команды find
    • Использование команды sort
    • Добавить комментарий

Фильтр команды используется с символом перенаправления канала команды (|) и является командой внутри команды, которая считывает ввод команды, преобразовывает ввод, а затем записывает выход. Команды-фильтры дают возможность сортировать, просматривать и отбирать часть выходной информации других команд.

Фильтры делят, переупорядочивают или выделяют отдельные части из проходящей через них информации. В приведенной ниже таблице перечислены команды-фильтры, доступные в Microsoft Windows XP и выше.

Команда Описание
more Отображает содержимое файла или вывода команды в одном окне командной строки за раз.
find Поиск указанных символов в файлах и выходе команды.
sort Сортировка файлов и выхода команды по алфавиту.

Для направления данных из файла на вход фильтра используется символ «меньше» (<). Для направления на вход фильтра выхода другой команды используется канал (|).

Использование команды more

Команда more выводит содержимое файла или выхода команды в одном окне командной строки за раз. Например, чтобы отобразить содержимое файла List.txt в одном окне командной строки за раз, введите следующую команду:

more < list.txt

Отображается одно окно командной строки со сведениями, а затем в нижней части окна командной строки отображается строка — More —. Для перехода к следующему окну командной строки, нажмите любую клавишу на клавиатуре, кроме клавиши PAUSE. Для остановки просмотра следует ввести комбинацию CTRL+C.

Команда more полезна при работе с командами, создающими выход более одного окна командной строки. Например, при выводе дерева каталогов жесткого диска. Если на диске содержится больше каталогов, чем может быть одновременно выведено в окне командной строки, можно использовать команду tree с каналом (|) и команду more.

tree c:\ | more

На экран будет выведен первое окно командной строки с выходом команды tree, а затем отобразится строка — More —. Выход будет ожидать нажатия любой клавиши для продолжения (кроме клавиши PAUSE).

Использование команды find

Команда find проводит поиск заданной строки или текста в файлах. Команда Cmd.exe отображает каждую строку, которая совпадает со строкой или текстом, указанным в окне коммандной строки. Команда find может быть использована как команда-фильтр и как обычная команда Microsoft Windows XP. Дополнительные сведения об использовании команды find в качестве стандартной команды см. в разделе Find.

Чтобы использовать команду find в качестве команды-фильтра, необходимо включить символ «меньше» (<) и строку или текст, в котором требуется выполнить поиск. По умолчанию при поиске команда find учитывает регистр. Например, следующая команда будет искать строку «Pacific Rim» в файле Trade.txt:

find "Pacific Rim" < trade.txt

Выход не включает вхождение строки «pacific rim». Встречается вхождение строки «Pacific Rim» с прописными буквами.

Для сохранения результатов работы команды find (вместо отображения их в окне командной строки), введите символ «больше» (>) и имя файла, в котором требуется хранить выход. Например, следующая команда ищет строку «Pacific Rim» в файле Trade.txt с сохранением результата в файле Nwtrade.txt:

find "Pacific Rim" < trade.txt > nwtrade.txt 

Использование команды sort

Команда sort выполняет сортировку по алфавиту текстового файла или выхода команды. Например, следующая команда сортирует содержимое файла List.txt и отображает результаты в окне командной строки:

sort < list.txt

В этом примере команда sort сортирует строки файла List.txt в алфавитном порядке и выводит результат на экран без изменения файла. Для сохранения результатов работы команды sort (вместо их отображения) введите символ «больше» (>) и имя файла. Например, следующую команду можно использовать для алфавитной сортировки строк файла List.txt и сохранения результатов в файле Alphlist.txt:

sort < list.txt > alphlist.txt

Для сортировки вывода команды следует ввести команду, затем символ канала (|) и команду sort (команда | sort). Например, следующая команда сортирует в алфавитном порядке строки, которые содержат слово «Jones» (вывод команды find):

find "Jones" maillst.txt | sort 

  • Сортировка по типу файлов windows 10
  • Состояние сети нет подключения windows 10 на ноутбуке
  • Сортировка по имени в windows
  • Состояние сети нет подключения windows 10 как исправить
  • Сортировка значков на рабочем столе windows 10