Cmd 使用命令提示符对文本文件中的数字进行排序

Cmd 使用命令提示符对文本文件中的数字进行排序,cmd,Cmd,我想在一个文本文件中对数字进行排序,并在另一个文本文件中写入相同的数字。我正在使用下面给出的命令,但我无法获得输出。有人能帮我吗 sort -n test.txt /o output.txt 两次指定此输入文件时出现错误消息。(很好的练习:)) (很好的练习:)) 当然(很好的练习:) 使用命令提示符对文本文件中的数字进行排序,但不要使用排序命令** @echo off&&setlocal enabledelayedexpansion&cd/d“%~dp0” 对于/f delims^=:^t

我想在一个文本文件中对数字进行排序,并在另一个文本文件中写入相同的数字。我正在使用下面给出的命令,但我无法获得输出。有人能帮我吗

sort -n test.txt /o output.txt
两次指定此输入文件时出现错误消息。

(很好的练习:))

(很好的练习:))

当然(很好的练习:)


使用命令提示符对文本文件中的数字进行排序,但不要使用
排序
命令**

@echo off&&setlocal enabledelayedexpansion&cd/d“%~dp0”
对于/f delims^=:^tokens^=^2%%i in('find/c/v“;“input.txt”)do set _cnt=%i
2> nul(cd.>%tmp%\\ u file\.tmp“&cd.>“output.txt”)&对于(input.txt)中的/f%%i,执行echo/,%%i,>%tmp%\\ u file\.tmp”
对于(119999)中的/l%%l,请查找“,%%l,”%tmp%\\u file.tmp“>nul&&&(echo/%%l>>“output.txt”&调用集/a“\u cnt-=1”&&if!\u cnt!==0转到:~0)
:~0  
超时-1&删除“%tmp%\\ u file\.tmp”&键入“output.txt”

::也要计算文件中存在的行/数,以用作/l:的运行分隔符:
对于/f delims^=:^tokens^=^2%%i in('find/c/v“;“input.txt”)do set _cnt=%i
::创建2个空文件,如果存在,则删除内容::
2> nul(cd.>%tmp%\\ U文件\uuUp.tmp“&cd.>“output.txt”)
::为每个文件编号/行“%tmp%\\u file\.tmp”创建唯一字符串:
对于(input.txt)中的/f%%i,执行echo/,%%i,>>%tmp%\\u文件\uuuu.tmp
rem::执行1/1到99999的数字循环,并在文件“%tmp%\\u file.tmp”中查找“number”:
rem::从字符串中删除“,”(逗号),保存(如果有),仅保存“output.txt”中的变量编号%%L
对于(119999)中的/l%%l,请查找“,%%l,”%tmp%\\u file.tmp“>nul&&&(echo/%%l>>“output.txt”&调用集/a“\u cnt-=1”&&if!\u cnt!==0转到:~0)
::对于每个事件,它将从_cnt计数器中减去1,因此当它达到零时,它将停止列出/获取::
echo/%%L>>“output.txt”&调用集/a“\u cnt-=1”&如果_cnt!==0转到:~0)
当然(很好的练习:)


使用命令提示符对文本文件中的数字进行排序,但不要使用
排序
命令**

@echo off&&setlocal enabledelayedexpansion&cd/d“%~dp0”
对于/f delims^=:^tokens^=^2%%i in('find/c/v“;“input.txt”)do set _cnt=%i
2> nul(cd.>%tmp%\\ u file\.tmp“&cd.>“output.txt”)&对于(input.txt)中的/f%%i,执行echo/,%%i,>%tmp%\\ u file\.tmp”
对于(119999)中的/l%%l,请查找“,%%l,”%tmp%\\u file.tmp“>nul&&&(echo/%%l>>“output.txt”&调用集/a“\u cnt-=1”&&if!\u cnt!==0转到:~0)
:~0  
超时-1&删除“%tmp%\\ u file\.tmp”&键入“output.txt”

::也要计算文件中存在的行/数,以用作/l:的运行分隔符:
对于/f delims^=:^tokens^=^2%%i in('find/c/v“;“input.txt”)do set _cnt=%i
::创建2个空文件,如果存在,则删除内容::
2> nul(cd.>%tmp%\\ U文件\uuUp.tmp“&cd.>“output.txt”)
::为每个文件编号/行“%tmp%\\u file\.tmp”创建唯一字符串:
对于(input.txt)中的/f%%i,执行echo/,%%i,>>%tmp%\\u文件\uuuu.tmp
rem::执行1/1到99999的数字循环,并在文件“%tmp%\\u file.tmp”中查找“number”:
rem::从字符串中删除“,”(逗号),保存(如果有),仅保存“output.txt”中的变量编号%%L
对于(119999)中的/l%%l,请查找“,%%l,”%tmp%\\u file.tmp“>nul&&&(echo/%%l>>“output.txt”&调用集/a“\u cnt-=1”&&if!\u cnt!==0转到:~0)
::对于每个事件,它将从_cnt计数器中减去1,因此当它达到零时,它将停止列出/获取::
echo/%%L>>“output.txt”&调用集/a“\u cnt-=1”&如果_cnt!==0转到:~0)


什么是
-n
应该是什么?它是用来排序数字的。windows
sort
没有这样的参数(请参见
sort/?
)如果您使用另一个
sort的实现,请指定。我刚刚使用了sort test.txt/o output.txt仍然不工作定义“不工作”.windows
sort
没有这样的参数(请参见
sort/?
),如果您使用另一个
sort
实现,请指定。我刚才使用了sort test.txt/o output.txt,它仍然不工作定义“不工作”。定义“不工作”。。。在这里工作得很好(尽管输入错误(已更正)),我传递了一个临时文件,输出文件为空,您应该传递
input.txt
temp.txt
由代码写入(结束)。定义“不工作”。。。在这里工作得很好(尽管输入错误(已更正)),我传递了一个临时文件,输出文件为空,您应该传递
input.txt
temp.txt
是由代码编写的。您只需执行
“tokens=2 delims=:”
,而不是
delims^=:^tokens^=^2
(更容易阅读)。如果您使用
findstr/x
(或者可能
findstr“\”
,以避免误用空格),则不需要逗号@Stephan这使用了2个分隔符,“:“+1空格!”:“我认为查找速度更快,并对它们进行排序findstr。@Stephan请告诉我您正在考虑此事!
“tokens=2 delims=:”
那么。我不知道
find
是否比
findstr
快,但如果是这样,生成
\u文件\uuu.tmp
肯定否定了这一优势。你可以做
而不是
delims^=:^tokens^=^2
你只需要做
“tokens=2 delims=:”
(更容易阅读)。如果您使用
findstr/x
(或者可能
findstr“\”
,以避免误入空格),则不需要逗号。@Stephan这使用了2个分隔符,“:“+1空格!”:“我认为查找速度更快,并对它们进行排序findstr。@Stephan请告诉我您正在考虑此事!
“tokens=2 delims=:”
那么。我不知道
find
是否比
findstr
快,但如果是这样,生成
\u文件.tmp
肯定会抵消这一优势。
@echo off
setlocal enabledelayedexpansion

REM convert all numbers to the same lenght by adding leading spaces:
(for /f %%i in (input.txt) do (
    REM 12 leading spaces:
    set "Z=            %%i"
    REM take last 12 digits:
    echo !Z:~-12!
))>temp.txt 

REM sort it:'
sort temp.txt /O temp.txt

REM remove the spaces:
(for /f %%i in (temp.txt) do echo/%%i)>output.txt
del temp.txt