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
应该是什么?它是用来排序数字的。windowssort
没有这样的参数(请参见sort/?
)如果您使用另一个sort的实现,请指定。我刚刚使用了sort test.txt/o output.txt仍然不工作定义“不工作”.windowssort
没有这样的参数(请参见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