如何使用批处理文件提取最早的日期

问题描述

我正在尝试找出如何从特定文件夹的文件列表中提取最早的日期,然后将其保存为.txt文件

例如:

每次运行脚本时,我只需要在文本文件中保留最早的日期: txt文件显示-20200726

名称

  1. 文件_1_20200726
  2. File_2_20200701

谢谢:-)

解决方法

由于您未提供任何代码,因此这里有一个powershell代码,也许这可以帮助您制作自己的代码?

$p = '\S+(\d{8})'
$MyString = @('File_1_20200726','File_2_20200701','File_2_20200781','File_0_20200725','File_hhsjj_ggee','Filewithoutdigits') | sort
$MyString | %{ [regex]::matches($_,$p) } | %{ $_.Groups[1].Value }

输出:

20200725
20200726
20200701
20200781
,

您可以在cmd中使用sortfor循环命令来利用日期格式来简化此操作。

我有点被撕裂了,但是在循环或rhe排序时,rhe变慢了,因为看来您是否愿意或不希望在rhe date之前考虑这个数字?并且rhe文件名可能不一致。

因此,我假设您只想要最旧的日期,并且它总是在2nf下划线之后出现。

@( SETLOCAL ENABLEDELAYEDEXPANSION
  SET "Folder=C:\Path\To\FilesFolder"
  SET "txtfile=C:\Path\For\DateFile.txt"
  SET "DIF=0"
  SET "CURRENT=10000000"
)

CALL :Main

( ENDLOCAL
  EXIT /B
)
  
:Main
  For /F "Tokens=3" %%_ IN ('
    DIR /B/A-D "%Folder%\*_*_*"
  ') DO (
    SET /A "DIF= _ - CURRENT"
    IF /I !DIF! LSS 0 SET /A "CURRENT= _"
  )
  Echo.%CURRENT%>>"%txtfile%"
  Echo.%CURRENT%
GOTO :EOF