找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 28478|回复: 10

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

[复制链接]
发表于 2011-10-17 10:25:23 | 显示全部楼层 |阅读模式
本帖最后由 mj_l 于 2011-11-17 20:33 编辑

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

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

评分

参与人数 1PB +2 收起 理由
CrLf + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-10-17 10:55:25 | 显示全部楼层
是有难度啊·如果再看见的话,也许会更有难度
发表于 2011-10-17 11:09:06 | 显示全部楼层
本帖最后由 920168 于 2011-10-20 12:18 编辑

见8楼
</br>
</br>
发表于 2011-10-17 12:31:04 | 显示全部楼层
回复 2#
解决问题的思路应该是找到10天以前rar文件,大于200mb 或小于100mb 都删除掉

评分

参与人数 1PB +3 收起 理由
CrLf + 3 乐于助人

查看全部评分

发表于 2011-10-17 13:31:58 | 显示全部楼层
回复 3# 920168


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

评分

参与人数 1PB +3 收起 理由
CrLf + 3 乐于助人

查看全部评分

 楼主| 发表于 2011-10-17 22:52:44 | 显示全部楼层
求完善功能!
发表于 2011-10-18 16:47:14 | 显示全部楼层
回复 5# Batcher


    谢谢提醒,如果创建日期和今天是不同月同号,也算不出来!
发表于 2011-10-18 20:59:51 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2011-10-21 18:38:40 | 显示全部楼层
回复 8# 920168


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

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

不用符合所有要求才删。
发表于 2011-10-21 19:08:19 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
mj_l + 1 乐于助人

查看全部评分

发表于 2011-10-21 22:37:37 | 显示全部楼层
回复 9# mj_l


请把所有的需求更新到顶楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 06:51 , Processed in 0.022334 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表