标题: [文件操作] [已解决]根据日期删除老文件的批处理代码求优化 [打印本页]
作者: 511182890 时间: 2015-7-23 15:45 标题: [已解决]根据日期删除老文件的批处理代码求优化
本帖最后由 511182890 于 2015-7-28 14:24 编辑
- @echo off
- for /f "tokens=1-7delims=-" %%a in ('dir /b /s /o-d /tw *-*.dxf') do (
- if defined %%a-%%b-%%c-%%d-%%e-%%f (
- del /f /q "%%a-%%b-%%c-%%d-%%e-%%f-%%g"
- ) else set %%a-%%b-%%c-%%d-%%e-%%f=1
- )pause
复制代码
这条代码是下面文件对比一样之后删除日期老的那一个的,帮忙修改一下,处理结束显示共删除几条数据。
AD1021-G1101-AA-110-主副背料-四向-820.dxf
AD1021-G1101-AA-110-主副背料-四向-821.dxf
作者: aa77dd@163.com 时间: 2015-7-23 16:53
回复 1# 511182890
1. 子目录中也有要处理的文件吗?
2. 如果有, 那么不同目录中有同名的文件怎么处理?
3. 文件名前 6 段相同的最多只有 2 个文件吗?
4. 如果不止 2 个文件其名前 6 段相同, 怎么处理?
作者: 511182890 时间: 2015-7-24 14:26
1.包括文件夹下所有子文件夹文件
2。不同目录不会有同名文件,这个应该是只对比同一个文件夹下的文件
3。不是只有二个,也许有三个
4。不管几个文件只要前六段一样就删除创建时间老的只留一个最新的。
我要帮我做个累加,总共删除了多少个文件。
作者: 511182890 时间: 2015-7-24 14:27
回复 2# aa77dd@163.com
1.包括文件夹下所有子文件夹文件
2。不同目录不会有同名文件,这个应该是只对比同一个文件夹下的文件
3。不是只有二个,也许有三个
4。不管几个文件只要前六段一样就删除创建时间老的只留一个最新的。
我要帮我做个累加,总共删除了多少个文件。
作者: aa77dd@163.com 时间: 2015-7-24 17:35
你自行测试一下, 确认无误后, 再把 echo del 那行改成实际的删除代码- @echo off
- setlocal enabledelayedexpansion
- set /a "deltotal=id=0"
- for /f "delims=" %%a in ('dir *?-*?-*?-*?-*?-*?-*?.dxf /o-d /b /s') do (
- for /f "tokens=1-6 delims=-" %%b in ("%%~na") do (
- if "!$%%~spa%%b-%%c-%%d-%%e-%%f-%%g!"=="" (
- set /a id+=1
- set "$%%~spa%%b-%%c-%%d-%%e-%%f-%%g=!id!"
- ) else (
- set /a "@!$%%~spa%%b-%%c-%%d-%%e-%%f-%%g!+=1, deltotal+=1"
- echo del /f /q "%%a"
- )
- )
- )
- echo;
- for /f "delims==" %%a in ('set $') do (
- echo %%a
- for %%b in (@!%%a!) do echo 删除了 !%%b! 个文件 & echo;
- )
- echo; & echo 总计删除了 !deltotal! 个文件
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |