如何使用Windows批处理对文本文件中的日期进行排序
我是批处理脚本的初学者,尝试对文本文件进行排序并获得一年中的最高日期。尝试了不同的选项,根据日期对文本文件进行排序,并删除重复的行,最后将每年的最高期间放入不同的文本文件中。但在第一步,我无法在文本文件中按日期排序。请看下面的例子 示例:在文件1中,我有以下几行如何使用Windows批处理对文本文件中的日期进行排序,windows,sorting,batch-file,uniq,period,Windows,Sorting,Batch File,Uniq,Period,我是批处理脚本的初学者,尝试对文本文件进行排序并获得一年中的最高日期。尝试了不同的选项,根据日期对文本文件进行排序,并删除重复的行,最后将每年的最高期间放入不同的文本文件中。但在第一步,我无法在文本文件中按日期排序。请看下面的例子 示例:在文件1中,我有以下几行 May-2017 Jul-2017 May-2017 Jan-2017 Sep-2018 Feb-2018 文件2中的输出应为 Jul-2017 Sep-2018 这类问题通常被否决并关闭。StackOverflow不是免费的代码编
May-2017
Jul-2017
May-2017
Jan-2017
Sep-2018
Feb-2018
文件2中的输出应为
Jul-2017
Sep-2018
这类问题通常被否决并关闭。StackOverflow不是免费的代码编写服务。你必须先努力为自己写一个解决方案 然而,在这种情况下我做了一个例外,尽管我没有表现出任何努力来解释代码
@echo off
setlocal EnableDelayedExpansion
set "i=0"
for %%a in (Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec) do (
set /A "Mon[%%a]=i+=1"
set "Mon[!i!]=%%a"
)
for /F "tokens=1,2 delims=-" %%a in (file1.txt) do (
set /A "c=(Year[%%b]-Mon[%%a]>>31)+1,Year[%%b]=Year[%%b]*c+Mon[%%a]*^!c"
)
for /F "tokens=2,3 delims=[]=" %%a in ('set Year[') do echo !Mon[%%b]!-%%a
呃,巴奇对日期一无所知。你要么需要大量的代码,要么(借助)另一种编程语言。“尝试了不同的选项来根据句点对文本文件排序”这句话毫无意义!文本文件始终按字母顺序排序。您需要一种方法来明确指定所需的顺序为“Jan”、“Feb”、“Dec”,然后在排序过程中使用这种顺序。@Stephan:“您需要很多代码”。我不这么认为。。。看看我的答案<代码>;)Windows中的
SORT
命令按ascii文本顺序排序。它对数字和日期一无所知。要按正确的顺序对日期进行排序,日期必须采用YYYY-MM格式2018-09
@Aacini与'sort file.txt'相比“代码很多”。(我有类似的想法,但没有时间去解决)我特别喜欢你的两行set/a
行:)
。在我的解决方案中会有几行。