[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理怎样删除指定文件 ?

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

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

1、小于 100mb
2、大于 200mb
3、扩展名是  rar
4、10天前
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

是有难度啊·如果再看见的话,也许会更有难度
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

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

见8楼
</br>
</br>
http://www.diecasting86.com

TOP

回复 2#
解决问题的思路应该是找到10天以前rar文件,大于200mb 或小于100mb 都删除掉
1

评分人数

    • CrLf: 乐于助人PB + 3

TOP

回复 3# 920168


如果今天是2011-11-01,你的代码能算出10天前吗?
1

评分人数

    • CrLf: 乐于助人PB + 3
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

求完善功能!

TOP

回复 5# Batcher


    谢谢提醒,如果创建日期和今天是不同月同号,也算不出来!
http://www.diecasting86.com

TOP

本帖最后由 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
复制代码
http://www.diecasting86.com

TOP

回复 8# 920168


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

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

不用符合所有要求才删。

TOP

本帖最后由 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
复制代码
1

评分人数

    • mj_l: 乐于助人技术 + 1
http://www.diecasting86.com

TOP

回复 9# mj_l


请把所有的需求更新到顶楼
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表