Board logo

标题: [文件操作] 批处理怎样对多个目录内的文件进行依次操作? [打印本页]

作者: fireredfox    时间: 2011-11-14 11:05     标题: 批处理怎样对多个目录内的文件进行依次操作?

如上图有两个文件夹,每个文件夹内的文件名称相同,现在想用批处理删除456 789内3天前的文件夹。将来可能或有多个文件夹,不单单只有 456 和789 两个文件。
我想到的是先遍历出所有的文件夹,然后进行删除操作。我现在只遍历处了文件,后面的没有思路了!请各位指教一下!
遍历脚本for /f "delims=" %i in ('dir /s /ad /b "f:\123"') do @echo %i  >>f:\123\345.txt
作者: fireredfox    时间: 2011-11-14 12:09

对上述问题做详细说明
文件目录结构 盘符:\\task\id\以日期命名的文件夹\文件
要求 删除task文件夹下 以不同id命名的文件夹 内10天前的文件夹
作者: heyoug    时间: 2011-11-14 18:45

如果当前日期是 10号以后很好判断
如果小于10 就要去计算上个月的最大天数
如果是2月还要计算闰月否
以前做过一个备份3天内的文件,感觉有点麻烦。
作者: yyykkkyyyy    时间: 2011-11-14 21:56

本帖最后由 yyykkkyyyy 于 2011-11-14 22:45 编辑

感觉~做过一个备份3天的~麻烦,那就是会写啰
日期计算要用vbs的简单,纯批处理日期总是有那些麻烦...我就献丑了
  1. @echo off&setlocal enabledelayedexpansion
  2. set n=3
  3. rem ===============计 n 天前的日期============================
  4. set/a y=%date:~,4%,m=1%date:~5,2%,d=1%date:~8,2%-n
  5. :r
  6. if %d% leq 100 (
  7. rem 先统一按每月31天计,之后修正======
  8.    set/a d+=31
  9.    set/a m-=1
  10.    if !m! equ 100 set/a "m+=12,y-=1"
  11.    echo !m:~-2!|findstr/x "04 06 09 11">nul&&set/a d-=1
  12.    if !m! equ 102 set/a "d-=3-^!(y&3)+^!(y%%100)-^!(y%%400)"
  13.    goto :r)
  14. set ymd=%y%%m:~-2%%d:~-2%
  15. echo 准备删除 %ymd% 之前的日期文件夹
  16. :: ==============查找文件夹名为8个数组成的文件夹===========
  17. :: 如果含有不是日期又是8位数组成的文件夹名则可能会误删,这里只显示并不删
  18. for /L %%i in (1 1 8)do set ds=!ds![0-9]
  19. for /f "delims=" %%i in ('dir/b/ad/s^|findstr/e "\\%ds%"')do (
  20.   if "%%~ni" leq "%ymd%" echo rd/s/q "%%i")
  21. pause
复制代码

作者: fireredfox    时间: 2011-11-15 15:44

非常感谢给各位兄弟,还有一个最主要的问题,怎样自动切换以不同id命名的文件夹啊,id是会不断增加的!
作者: yyykkkyyyy    时间: 2011-11-15 23:32

本帖最后由 yyykkkyyyy 于 2011-11-15 23:35 编辑

回复 5# fireredfox

看来是把我那代码的批处理放一个id文件夹下去执行了
只要是确定你说的那些id不是纯8位数为名, 我那代码是带子文件夹一起处理的,就是说批处理要放那些id文件夹并列位置就都"自动"处理了,如果把
if "%%~ni" leq "%ymd%" echo rd/s/q "%%i") 里的 echo 去掉就是真正删除了,符合条件的文件夹带它下面的文件及子文件夹一起删,且不会有提示,除非你有备份,不然都应先测试
作者: Batcher    时间: 2011-11-16 17:17

回复 3# heyoug


有现成的函数可以调用:

批处理获取指定天数之前的日期
http://bbs.bathome.net/thread-3330-1-1.html




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