问题描述
我正在尝试找出如何从特定文件夹的文件列表中提取最早的日期,然后将其保存为.txt文件?
例如:
每次运行脚本时,我只需要在文本文件中保留最早的日期: txt文件应显示-20200726
- 文件_1_20200726
- 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中使用sort
或for
循环命令来利用日期格式来简化此操作。
我有点被撕裂了,但是在循环或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