regex - 如何根据名称自动删除旧文件?
问题描述
我遇到了生成许多文件的软件的问题。我无法控制文件的生成,但我可以在之后处理它们。文件具有这种名称:
"RandomString".*ProjectNumber*.*Date*.*Time*.txt
例如:
1297729137.0004202.20180925.232147.txt
我想保留相同的 ProjectNumber,只保留最后生成的 TXT 文件。
知道如何轻松做到这一点吗?
解决方案
@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
推荐阅读
- php - 有没有办法让我的 laravel 项目使用表单中的 https 就像路由一样
- python - 使用重写的保存方法同步 Django 模型
- objective-c - 那么在apple TV 4k Gen 2上检测新的后退按钮的方法是什么
- reactjs - React 测试库 - “messageParent”只能在工作人员内部使用
- javascript - 反应打字稿组件意外的令牌,预期的“{”
- git - 截断给定文件的历史记录
- python - 在 Raspberry Pi 上运行带有嵌入式 matlab 代码的 python
- powerbi - 使用按钮和书签在 PowerBI 中调整视觉对象的大小
- r - 从网页下载所有 R zip 包
- jquery - 如何在 Google 可视化圆环图上获取正确的图例标签