Board logo

标题: [文件操作] [已解决]批处理怎样删除指定文件 ? [打印本页]

作者: mj_l    时间: 2011-10-17 10:25     标题: [已解决]批处理怎样删除指定文件 ?

本帖最后由 mj_l 于 2011-11-17 20:33 编辑

批处理删除符合下面所有要求的文件:

1、小于 100mb
2、大于 200mb
3、扩展名是  rar
4、10天前
作者: wc726842270    时间: 2011-10-17 10:55

是有难度啊·如果再看见的话,也许会更有难度
作者: 920168    时间: 2011-10-17 11:09

本帖最后由 920168 于 2011-10-20 12:18 编辑

见8楼
</br>
</br>
作者: 545810831    时间: 2011-10-17 12:31

回复 2#
解决问题的思路应该是找到10天以前rar文件,大于200mb 或小于100mb 都删除掉
作者: Batcher    时间: 2011-10-17 13:31

回复 3# 920168


如果今天是2011-11-01,你的代码能算出10天前吗?
作者: mj_l    时间: 2011-10-17 22:52

求完善功能!
作者: 920168    时间: 2011-10-18 16:47

回复 5# Batcher


    谢谢提醒,如果创建日期和今天是不同月同号,也算不出来!
作者: 920168    时间: 2011-10-18 20:59

本帖最后由 920168 于 2011-10-20 12:02 编辑

没有测试,希望大家看到代码别笑,就这水平!3楼的代码我写之前没有理解LZ的意思!谢谢“545810831 ”提醒!!
  1. echo off
  2. cls
  3. echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs
  4. for /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.vbs') do (
  5.    set y=%%i
  6.    set m=%%j
  7.    set d=%%k
  8. )
  9. if %m% LSS 10 set m=0%m%
  10. if %d% LSS 10 set d=0%d%
  11. set OldDate=%y%-%m%-%d%
  12. del GetOldDate.vbs
  13. for /r %%a in (*.rar) do for /f "tokens=1,2* delims= " %%b in (
  14. 'dir /tc "%%a" ^| find /i "%%~nxa"') do (
  15.     if "%%b" lss "%OldDate%" echo "%%a">>10.txt
  16. )
  17. IF not EXIST "10.txt" exit
  18. ::
  19. for /r %%a in (*.rar) do if %%~za gtr 209715200 echo "%%a">>200.txt
  20. for /r %%a in (*.rar) do if %%~za LSS 104857600 echo "%%a">>100.txt
  21. IF not EXIST "200.txt" cd.>200.txt
  22. IF not EXIST "100.txt" cd.>100.txt
  23. copy /b 200.txt + /a 100.txt 200100.txt
  24. del /q /s 200.txt
  25. del /q /s 100.txt
  26. ::
  27. @echo off&setlocal enabledelayedexpansion
  28. for /f "delims=" %%i in ('type "10.txt"') do (
  29. set var1=%%i
  30. for /f "delims=" %%a in ('type "200100.txt"') do (
  31. set var2=%%a
  32. if /i "!var2!"=="!var1!" echo !var1!>>del.txt
  33. ))
  34. del /q /s 200100.txt
  35. del /q /s 10.txt
  36. ::
  37. @echo off & setlocal EnableDelayedExpansion
  38. set j=0
  39. for /f "delims=""" %%i in (del.txt) do (
  40. set /a j+=1
  41. set con!j!=%%i
  42. call set a=%%con!j!%%
  43. del /Q /s !a!
  44. )
  45. del /q /s del.txt
复制代码

作者: mj_l    时间: 2011-10-21 18:38

回复 8# 920168


    不好意思,之前的意思表达错了,应该是:

1、小于 100mb 的所有 rar 文件都删除
2、大于 200mb 的所有 rar 文件都删除
3、10天前 的所有 rar 文件都删除

不用符合所有要求才删。
作者: 920168    时间: 2011-10-21 19:08

本帖最后由 920168 于 2011-10-21 19:23 编辑

回复 9# mj_l
把它放于要删除的文件夹下,运行就好了
  1. echo off
  2. cls
  3. echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs
  4. for /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.vbs') do (
  5.    set y=%%i
  6.    set m=%%j
  7.    set d=%%k
  8. )
  9. if %m% LSS 10 set m=0%m%
  10. if %d% LSS 10 set d=0%d%
  11. set OldDate=%y%-%m%-%d%
  12. del GetOldDate.vbs
  13. for /r %%a in (*.rar) do for /f "tokens=1,2* delims= " %%b in (
  14. 'dir /tc "%%a" ^| find /i "%%~nxa"') do (
  15.     if "%%b" lss "%OldDate%" del /s /q "%%a"
  16. )
  17. ::
  18. for /r %%a in (*.rar) do if %%~za gtr 209715200 del /s /q "%%a"
  19. ::
  20. for /r %%a in (*.rar) do if %%~za LSS 104857600 del /s /q "%%a"
  21. exit
复制代码

作者: Batcher    时间: 2011-10-21 22:37

回复 9# mj_l


请把所有的需求更新到顶楼




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