本人工作需要写了个批处理,其中一段需要获取指定目录下文件的数量,写来写去总是存在效率问题,特发帖集思广益,求高效之法,问题简化如下(可用第三方):
文件夹ABC中可能存在8000-10000个左右的文件,为每隔一定时间软件自动拷贝而来,文件格式为“A_B.txt”,其中A、B均为数字,A不固定,B代表区域。(B≤9999)
文件列表示例如下:
1_1.TXT
1_2.TXT
1_3.TXT
2_4.TXT
2_2.TXT
......
1_1.TXT代表1区域的数据,1_2.TXT、2_2.TXT代表2区域的数据
现需统计文件所代表区域总数,即总共已拷贝多少区域?
(另一种表述:上示列表红色数字不重复的总个数是多少?)
PS:我采用的for /r、for /f+dir速度都不理想- @echo off
- set t=%time%
- for /f "tokens=2 delims=_." %%i in ('dir /b abc\*.txt') do (
- if not defined @@%%i set /a upn+=1
- set /a @@%%i=0
- )
- echo %t%
- echo %time%
复制代码
-
- @echo off
- set t=%time%
- for /r "abc" %%i in (*.txt) do (
- for /f "tokens=2 delims=_" %%a in ("%%~ni") do (
- if not defined @@%%a set /a upn+=1
- set /a @@%%a=0
- )
- )
- echo %t%
- echo %time%
复制代码 -------------------------------------------------------------------------------------------
问题延伸
◇此模块主要实现功能为求出剩余区域及数量
◇剩余区域需要先求出,当剩余区域大于某值时将不详细显示具体剩余区域
◇配置文件中有定义区域范围,如“1-9999”
◇根据指定文件夹(例如ABC文件夹)中已有文件求出剩余区域
[ 本帖最后由 zhouyongjun 于 2010-4-7 16:28 编辑 ] |