批处理文件删除除文件名最后10个之外的所有文件

时间:2017-03-22 14:23:30

标签: windows batch-file

我有多个文件夹,其中包含多个具有相同名称的文件,然后是时间戳。例如:

foo_2017.01.16.png
foo_2017.01.15.png
foo_2017.01.14.png
bar_2017.01.16.png
bar_2017.01.15.png
bar_2017.01.14.png
file_2017.01.16.png
file_2017.01.15.png
file_2017.01.14.png

我需要做的是创建一个批处理文件,该文件将仅解析_timestamp之前的名称并保留每个文件名的最后10个。我不是很精通批处理,可以在这里真正使用一些帮助。每个文件的修改日期是相同的,所以我不能只说保留最近10天,否则我可以处理。

编辑:

我有一个批处理文件,删除超过28天的特定文件夹中的文件,如下所示,我只是不知道如何修改它以专门针对每个文件名进行迭代,而不是按修改日期去:

/c echo @FILE
forfiles -p "C:\workspace\SeleniumTestResults" -s -m *.* /D -28 /C "cmd /c del @path"

同样,这批次肯定不是我的区域

1 个答案:

答案 0 :(得分:2)

@echo off
setlocal
REM create some files for testing:
break>foo_2017.01.16.png
break>foo_2017.01.15.png
break>foo_2017.01.14.png
break>bar_2017.01.16.png
break>bar_2017.01.15.png
break>bar_2017.01.14.png
break>file_2017.01.16.png
break>file_2017.01.15.png
break>file_2017.01.14.png
dir *.png

set keep=2

for /f "delims=_" %%a in ('dir /b *.png') do (
  for /f "skip=%keep% delims=" %%b in ('dir /b /o-n "%%~a*.png"') do del "%%b"
)
dir *.png