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

[文件操作] 批处理如何全盘查找AAA\BBB文件夹,并且删除文件夹中最早创建的文件?

[复制链接]
发表于 2015-6-3 20:46:27 | 显示全部楼层 |阅读模式
如题:在每天打开电脑的时候能够自动运行,自动全盘查找AAA\BBB文件夹,如果该盘符的剩余大小小于10g,那么删除文件夹中最早创建的文件。
我是个新手,不太会这个。但是我想先说说我的思路看看这个对不对。
1,首先自动运行我想的是做好以后放入启动项里,每天开机后就能够调用
2,全盘查找我想的是dir d: /ad /s这样能看到所有目录然后连接|findstr AAA\BBB,这样就能找到目录,我只需要去第一个就是我想要的目录地址。问题来了cmd下正常输出,但是批处理里面就输出不了,感觉像是那个" \ "斜线的问题
3,也是dir 找到剩余的空间大小小于10g就执行下面的
4,dir AAA\BBB目录地址 /od /s /b 就是得到安时间排序的目录表,我试了一下,问题又来了这个排序是在同一个文件夹下获得的排序,也就是说如果这些文件分别放在几个目录下,是他们在这些子目录下的排序,不是所有放在一起的排序。
哎~求救啊~
发表于 2015-6-3 21:21:02 | 显示全部楼层
  1. dir /ad/s/b |findstr /iec:"\AAA\BBB"
复制代码
 楼主| 发表于 2015-6-3 22:01:54 | 显示全部楼层
回复 2# terse


    额,怎么说呢 我是希望有人能帮我看看整个思路可行不可行,如果可行 ,那么我的具体实现上哪里需要更改。希望能详细一点
发表于 2015-6-3 23:00:37 | 显示全部楼层
回复 3# fl0329
那就一个文件一个文件的对比
起始将最早文件的创建时间定义给变量, 并且标记文件路径
然后和每个文件的创建时间作对比,如果当前文件早于之前定义的时间,那么重新标记当前文件,同时将时间的变量定义为当前文件的创建时间。
 楼主| 发表于 2015-6-4 16:08:39 | 显示全部楼层
回复 2# terse


   你给的代码运行不了啊。dir d: /ad /s|findstr AAA\BBB这样是可以运行的,因为我想把dir d: /ad /s|findstr AAA\BBB运行结果给取出来。不知道是不是这个思路。然后就有了for /f %%i in ('dir d: /ad /s|findstr AAA\BBB') do echo %%i但是在for循环中不知道为什么处理不了。
发表于 2015-6-4 18:45:09 | 显示全部楼层
看看什么结果
  1. @echo off
  2. for /f "delims=" %%i in ('dir /ad/s/b ^|findstr /iec:"\AAA\BBB"') do echo %%i
  3. pause
复制代码
 楼主| 发表于 2015-6-5 21:06:38 | 显示全部楼层
回复 6# terse


   恩,可以了,但是后面的时候又出问题了。我用fsutil volume diskfree可以获得盘符的剩余空间,但是做加减的时候他就说 无效数字,数字精度为32位。弄了很久也没弄好,就直接舍弃了后9位数用来进行比对。
本来这样算个大概还是可以的,但是又在按时间删除哪里卡主了,不知道怎么弄了。 高手帮帮忙啊
 楼主| 发表于 2015-6-8 11:18:11 | 显示全部楼层
回复 6# terse


    求老师帮忙,自己顶一下
发表于 2015-6-9 12:01:17 | 显示全部楼层
本帖最后由 terse 于 2015-6-9 12:02 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set Md=1048576
  3. for /f "skip=1tokens=1,2" %%a in ('wmic logicaldisk where "drivetype='3'" get name^,freespace') do (
  4.     for /f %%a in ("%%a") do if not defined b (
  5.         for /f "tokens=*" %%i in ('dir /ad/s/b %%b^|findstr /iec:"\AAA\BBB"') do (
  6.             for /f "tokens=*" %%i in ("%%i") do (
  7.                 set "len=0"
  8.                 set "free=%%a00"
  9.                 set "s=!free!"
  10.                 for %%i in (16 8 4 2 1) do if "!s:~%%i!" neq "" set/a len+=%%i&set "s=!s:~%%i!"
  11.                 set/a "rder=!free:~,8!%%Md,g=!free:~,8!/Md"
  12.                 for /l %%j in (8 1 !len!) do (
  13.                     set/a "qent=!rder!!free:~%%j,1!/Md,rder=!rder!!free:~%%j,1!%%Md"
  14.                     set "g=!g!!qent!"
  15.                 )
  16.                     if !g! lss 1024000 (
  17.                        for /f "tokens=*" %%j in ('dir /a-d/o-d/b "%%i" 2^>nul') do (
  18.                            set "b=%%i\%%j"
  19.                        )
  20.                     )
  21.             )
  22.         )
  23.     )
  24. )
  25. if defined b echo;!b!
  26. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 01:20 , Processed in 0.010257 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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