首页 > 解决方案 > 如何使用 Windows Batch 对文本文件中的日期进行排序

问题描述

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

示例:在 file1 中,我有以下几行

May-2017
Jul-2017
May-2017
Jan-2017
Sep-2018
Feb-2018

file2 中的输出应该是

Jul-2017
Sep-2018

标签: windowssortingbatch-fileuniqperiod

解决方案


这类问题通常被否决和关闭。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

推荐阅读