首页 > 解决方案 > 如何根据名称自动删除旧文件?

问题描述

我遇到了生成许多文件的软件的问题。我无法控制文件的生成,但我可以在之后处理它们。文件具有这种名称:

"RandomString".*ProjectNumber*.*Date*.*Time*.txt

例如:

1297729137.0004202.20180925.232147.txt

我想保留相同的 ProjectNumber,只保留最后生成的 TXT 文件。

知道如何轻松做到这一点吗?

标签: regexwindowspowershellbatch-filecmd

解决方案


@echo off
setlocal EnableDelayedExpansion

rem Search files, keep the last one by project
for /F "tokens=1-4 delims=." %%a in ('dir /B *.txt') do (
   if "%%c%%d" gtr "!project[%%b]!" set "project[%%b]=%%c%%d"
)

rem Remove the rest of files
for /F "tokens=1-4 delims=." %%a in ('dir /B *.txt') do (
   if "%%c%%d" neq "!project[%%b]!" del "%%a.%%b.%%c.%%d.txt"
)

此方法假定文件夹中仅存在这样的文件;如果没有,只需将通配符更改为*.*.*.*.txt


推荐阅读