Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Windows批处理对文本文件中的日期进行排序_Windows_Sorting_Batch File_Uniq_Period - Fatal编程技术网

如何使用Windows批处理对文本文件中的日期进行排序

如何使用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不是免费的代码编

我是批处理脚本的初学者,尝试对文本文件进行排序并获得一年中的最高日期。尝试了不同的选项,根据日期对文本文件进行排序,并删除重复的行,最后将每年的最高期间放入不同的文本文件中。但在第一步,我无法在文本文件中按日期排序。请看下面的例子

示例:在文件1中,我有以下几行

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
:)
。在我的解决方案中会有几行。