Board logo

标题: [文件操作] 批处理如何统计文件夹中按规则命名的缺失文件? [打印本页]

作者: alameda    时间: 2011-5-5 14:57     标题: 批处理如何统计文件夹中按规则命名的缺失文件?

请教各位,我现在遇到的问题是
有从一月到十二月的十二个文件夹,命名就是一月,二月,...,十二月。
每个月的文件夹里面存放着每个月的天数,一天是一个文件。
比如一月文件夹里面,有001.txt,,002.txt,...,031.txt,
二月文件夹里面,有032.txt,033.txt,...,061.txt,
但是可能不完整,比如二月缺少了050.txt,056.txt的数据。

那我要怎么统计出缺失了哪一天的数据呢?

我现在批处理语句只写出统计出每个文件夹或总的文件夹中的txt格式的文件个数。
如下:
  1. echo off
  2. set num=0
  3. for /r %2 %%i in (%1) do (
  4. set /a num+=1
  5. echo num 当前的值是 %num%
  6. )
  7. echo 当前目录下共有 %num% 个txt文件
复制代码
谢谢各位
作者: hanyeguxing    时间: 2011-5-5 15:54

本帖最后由 hanyeguxing 于 2011-5-5 16:51 编辑

061.txt,
二月里怎么会有 061.txt ?最大应该是 059.txt 或 060.txt ...


set Y=2011 用来设置年份
  1. @echo off&setlocal enableDelayedExpansion&set M=1000
  2. set Y=2011
  3. for %%a in (一 二 三 四 五 六 七 八 九 十 十一 十二) do set/a K+=1&set #!K!=%%a
  4. for /l %%a in (1,1,12) do (
  5.     set/a "K=^!(%%a-4)|^!(%%a-6)|^!(%%a-9)|^!(%%a-11)","D=^!(%%a-2)*(28+((^!(Y%%4)&^!^!(Y%%100))|^!(Y%%400)))+K*30+(^!^!(%%a-2)&^!K)*31"
  6.     for /l %%b in (1,1,!D!) do (
  7.         set/a M+=1
  8.         if not exist "!#%%a!月\!M:~-3!.txt" echo;缺少 !#%%a!月\!M:~-3!.txt 即 %Y%年 %%a月 %%b日
  9. ))
  10. pause
复制代码

作者: hfg1977    时间: 2011-5-5 16:58

虽然话难听,单不得不说这是很愚蠢的文件分类方式.
作者: hanyeguxing    时间: 2011-5-5 17:12

3# hfg1977


既然知道难听就不要说
作者: hfg1977    时间: 2011-5-5 17:18

谢谢版主提醒,下次不这么说了.  ^-^!
作者: Batcher    时间: 2011-5-5 22:42

2月份里面有多少文件需要考虑闰年么?
作者: chenqldiy    时间: 2011-5-6 12:11

2月份里面有多少文件需要考虑闰年么?
Batcher 发表于 2011-5-5 22:42

这问题对这道题目有深度
我刚还在想那年的2月有60~~~~~~~~~~
作者: alameda    时间: 2011-5-26 17:27

当时用批处理实在实现不出来,后来用其他语言实现的。

这个是要考虑闰年的。
而且楼上有人说存储方式很愚蠢,没办法,因为是特定的数据,也是为了方便以后索引和数据处理,所以才这样存储的。

非常感谢楼上各位回复。




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