批处理根据文件修改时间删除文件名最后几个字符不同的文件
文件夹内的文件为同一类型的文件,这里假设为TXT,文件名的命名规则是Baaaaaaaxxx,其中aaaaaaa为数字,需在运行批处理后无重复的,xxx或xx为版本号,如果...
文件夹内的文件为同一类型的文件,这里假设为TXT,文件名的命名规则是Baaaaaaaxxx,其中aaaaaaa为数字,需在运行批处理后无重复的,xxx或xx为版本号,如果存在文件名前八个字符相同的,则比较文件的修改时间,删除或移动时间比较旧的文件(建议在当前目录内新建文件夹OLD进行移动),不能以文件名的版本号数值大小作为新文件依据
文件名举例
B123456701.txt
B123456702.txt
B123567801.txt
B123567802.txt
B123234510.txt
B123234511.txt
B123653289.txt
B123653280.txt
B123549855.txt
B123544523.txt
B1235445123.txt
B1232100563.txt
B1232100564.txt
运行结果
B123456702.txt
B123567802.txt
B123234510.txt
B123653289.txt
B123549855.txt
B1235445123.txt
B1232100564.txt 展开
文件名举例
B123456701.txt
B123456702.txt
B123567801.txt
B123567802.txt
B123234510.txt
B123234511.txt
B123653289.txt
B123653280.txt
B123549855.txt
B123544523.txt
B1235445123.txt
B1232100563.txt
B1232100564.txt
运行结果
B123456702.txt
B123567802.txt
B123234510.txt
B123653289.txt
B123549855.txt
B1235445123.txt
B1232100564.txt 展开
2个回答
展开全部
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir/b/o-d *.txt') do (
set s=%%i
set s=!s:~,8!
if defined #!s! (del %%i) else set #!s!=1
)
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir/b/o-d *.txt') do (
set s=%%i
set s=!s:~,8!
if defined #!s! (del %%i) else set #!s!=1
)
更多追问追答
追问
刚刚漏了一个条件,就是在部分文件名的前面有“新建”两个字,能不能先把所有的文件名含“新建”的重命名,去掉“新建”两个字,已知去掉“新建”不会与目录内其他文件重复
追答
去掉文件名中“新建”的批处理
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir/b 新建*') do (
set fn=%%i
ren "%%i" "!fn:新建=!")
2012-07-10
展开全部
if not exist OLD md OLD
for /f "delims=" %%f in ('dir /b *.txt') do (set a=%%f
set #%a:~0,8%=%a:~0,8%)
for /f "tokens=2 delims=^=" %%f in ('set #') do (
for /f "skip=1 delims=" %%x in ('dir /b /o-d %%f*.txt') do move %%x OLD\)
for /f "delims=" %%f in ('dir /b *.txt') do (set a=%%f
set #%a:~0,8%=%a:~0,8%)
for /f "tokens=2 delims=^=" %%f in ('set #') do (
for /f "skip=1 delims=" %%x in ('dir /b /o-d %%f*.txt') do move %%x OLD\)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询