批处理下怎么统计文件夹内文件数目

来源:百度知道 编辑:UC知道 时间:2024/05/20 10:37:04
编了个批处理把文件50个一分组,现在遇到个小麻烦,就是不能确定文件夹内文件数目,所以在第一句加了个set,每次要改数字,非常麻烦。现在想要要他根据文件数目自动得到c值:举个例子。如果文件数=140那么就返回c=101 如果文件数=2530 那么就返回2501,就是如果此数在**1-**50或**51-**00之间就返回前一个数字(**1或**51),这样就可以让此批处理最高效率执行,各位高手们多多帮忙,谢谢了

Set c=1951
Set a=1
Set b=50
:MDFolders
md %a%-%b%
if %a%==%c% goto next
Set /a a=%a%+50
Set /a b=%b%+50
goto :MDFolders
:next
Set a=%c%
Set /a b=%a%+49
:MoveFiles
for /L %%q in (%a%,1,%b%) do move *%%q.* %a%-%b%\
Set /a a=%a%-50
Set /a b=%b%-50
if %a%==1 goto end
goto MoveFiles
:end
dir /ad/b/s |sort /r > kill.txt
For /f "tokens=*" %%i in (kill.txt) DO rd "%%i"
del *.* /q

只是要得到某文件夹下的文件数的话
我想可以使用dir命令来实现
假设目录为C:\的话
那么可以使用以下语句得到
C盘下的文件数目(包括隐藏或系统文件)

dir C:\ /W /B /A-D | find /V /C ""

欲将结果保存到变量C中的话
可以使用以下语句

dir C:\ /W /B /A-D | find /V /C "">D:\_tmp.txt
set /P c=<D:\_tmp.txt
del D:\_tmp.txt
这样%c%中就存储了文件的数目

注意:
之所以使用D:\_tmp.txt而非简单的_tmp.txt
是因为简单的使用_tmp.txt
会在当前目录下生成一个多余文件
如果要处理当前目录的话
将形成干扰