Board logo

标题: [文件操作] [已解决]根据日期删除老文件的批处理代码求优化 [打印本页]

作者: 511182890    时间: 2015-7-23 15:45     标题: [已解决]根据日期删除老文件的批处理代码求优化

本帖最后由 511182890 于 2015-7-28 14:24 编辑
  1. @echo off
  2. for /f "tokens=1-7delims=-" %%a in ('dir /b /s /o-d /tw *-*.dxf') do (
  3.         if defined %%a-%%b-%%c-%%d-%%e-%%f (
  4.                 del /f /q "%%a-%%b-%%c-%%d-%%e-%%f-%%g"
  5.         ) else set %%a-%%b-%%c-%%d-%%e-%%f=1
  6. )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 那行改成实际的删除代码
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /a "deltotal=id=0"
  4. for /f "delims=" %%a in ('dir *?-*?-*?-*?-*?-*?-*?.dxf /o-d /b /s') do (
  5.     for /f "tokens=1-6 delims=-" %%b in ("%%~na") do (
  6.         if "!$%%~spa%%b-%%c-%%d-%%e-%%f-%%g!"=="" (
  7.             set /a id+=1
  8.             set "$%%~spa%%b-%%c-%%d-%%e-%%f-%%g=!id!"
  9.         ) else (
  10.             set /a "@!$%%~spa%%b-%%c-%%d-%%e-%%f-%%g!+=1, deltotal+=1"
  11.             echo del /f /q "%%a"
  12.         )
  13.     )
  14. )
  15. echo;
  16. for /f "delims==" %%a in ('set $') do (
  17.     echo %%a
  18.     for %%b in (@!%%a!) do echo 删除了 !%%b! 个文件 & echo;
  19. )
  20. echo; & echo 总计删除了 !deltotal! 个文件
  21. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2