求批处理:查找包含某字符串的文件夹并删除日期较旧的文件夹
本帖最后由 2012xb21cn 于 2017-12-30 16:39 编辑例:在C盘bak文件夹中有如下类似大量文件夹
adbd.245.sa
bbb.123.t
bbb.213a
cst.s
dsss.14
dsss.367.fss
eb.ab
……
要求:查找出所有包含相同字符串的文件夹,并比较他们的创建日期,删除日期较旧的另一个文件夹。
注:指定的字符串不确定,可以第一个.前面的内容比较,相同则归为一组。
需要的结果:
第2和第3行、第5行和第6行为需要找出的文件夹,然后比较比较他们的创建日期,
如果2比3日期新就删除3,否则删除2;5和6行同理……
望高手帮助!!! @echo off
pushd %~dp0\
setlocal enabledelayedexpansion
for /f "tokens=1* delims=." %%a in ('dir /ad /b /tc /o-d') do (
set n=0
for /f "tokens=1,4" %%c in ('dir /ad /tc /o-d %%a.* ^| findstr /i /r "" ^| findstr /v /i "\.$"') do (
set /a n+=1
set fn-!n!=%%d
set var=%%c
set "fd-!n!=!var:~0,4!!var:~5,2!!var:~8,2!"
)
if defined fd-2 if "!fd-2!" lss "!fd-1!" rd "!fn-2!" /s /q 2>nul
)
pause
exit
本帖最后由 2012xb21cn 于 2018-1-1 10:19 编辑
nttwqz 发表于 2017-12-31 19:38
@echo off
pushd %~dp0\
setlocal enabledelayedexpansion
多谢高手,测试了失败
!fd-2!为旧日期而不是文件夹名称,所以显示和删除均失败! 2012xb21cn 发表于 2018-1-1 10:11
多谢高手,测试了失败
!fd-2!为旧日期而不是文件夹名称,所以显示和删除均失败!
文件夹名称是!fn-2! 本帖最后由 2012xb21cn 于 2018-1-1 11:57 编辑
nttwqz 发表于 2018-1-1 11:38
文件夹名称是!fn-2!
测试时改为显示,符合条件的全部显示<DIR>,不能显示具体文件夹名,删除也就失败
把set fn-!n!=%%d 改 set fn-!n!=%%a 后可以显示正确,但没了.后面的内容 2012xb21cn 发表于 2018-1-1 11:52
测试时改为显示,符合条件的全部显示,不能显示具体文件夹名,删除也就失败
把set fn-!n!=%%d 改 ...
完整的文件夹名是%%a.%%b
不过你这样改的话,就依赖排序了,虽然两次排序应该也一样的……
页:
[1]