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.
For example, to sort the file data.txt, the command would be
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
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
I think the /M parameter is stated incorrectly here, please see the command line help info about /M:
/M[EMORY] kilobytes Specifies amount of main memory to use for
the sort, in kilobytes. The memory size is
always constrained to be a minimum of 160
kilobytes. If the memory size is specified
the exact amount will be used for the sort,
regardless of how much main memory is
The best performance is usually achieved by
not specifying a memory size. By default the
sort will be done with one pass (no temporary
file) if it fits in the default maximum
memory size, otherwise the sort will be done
in two passes (with the partially sorted data
being stored in a temporary file) such that
the amounts of memory used for both the sort
and merge passes are equal. The default
maximum memory size is 90% of available main
memory if both the input and output are
files, and 45% of main memory otherwise.
If /M not specified, sort will try to utilize the as mush memory as possible, under this condition, the 160kb is the minimum memory not the maximum. If you specified /M, it will use that amount of memory exactly.
This doesn’t work on Windows 7.
Looks like the switches have disappeared.
“help sort” just produces an error now too.
To “God”, try this in Win7:
Works fine in Win7
From All Programs, accessories, “command prompt”
Command box will appear
for directions type sort /?
sort c:\infile.txt /O c:\outfile.txt
May need to create an empty output file due to win restriction on writing files to c:\ without administrator permission
Is there a way to to sort numerically? For example instead of:
It would sort numerically like:
to sort numerically, you’ll have to add leading zeros to numbers to make them of the same length based on the largest in your list
say you have the list,
left pad the numbers with zeros based on the largest “1268” then you get
now applying sort would yield a numerical result
for achieving a numerically sound sort in ascending or descending order ( with /r switch) one must first append leading zeros to all numbers based on the largest number in the list
say, you have the list
10 , 100, 30, 25, 1436
the largest is 1436. so, each number must have leading zeros to make them 4 digits long
0010, 0100, 0030, 0025, 1436
then applying the sort would yield
0010, 0025, 0030, 0100, 1436
this needs two sorts. one, to find out largest. two, to sort the list. (not mentioning the appending to do after finding the largest)
in practice, if you already know the largest number of digits you would encounter in your problem then just do this
echo %paddedValue~-LargestNumberOfDigitsYouWouldPossiblyEncounter% >> someTempFile.txt
this is a lot simpler but requires you to foresee the largest digit number you would encounter
just do this
set paddedNumber=000000000%number% (its 9 zeros)
echo %paddedNumber:~-9% >> someTemp.txt
this works as the numbers are 32 bit so you get 2.147 billion as limit. im using upto 9 digits so just 1 shy of a billion (if you use 10 then it could easily cross over the 2.147 billion limit). but if your numbers are crossing that limit then you should consider solving your problems by other means. a bat file can only do so much
Is there a way to just remove duplicates without sorting the file?