cmd.exe | 如何按特定格式计数文件?

到目前为止,我们使用这个来计算文件,但是它统计了所有的文件。

set count=0 & for %x in (*) do @(set /a count+=1 >nul) echo %count% 

如果目录有5个.jpg文件,5个.png文件和5个.gif文件,我们只想计算.jpg + .png,那么echo %count%结果是10而不是15?

你可以在for循环中列出几个通配符掩码:

 set count=0 & for %x in (*.jpg *.png) do @(set /a count+=1 >nul) 

你可以用这种方法计算所有不同的扩展
(仅在之前运行之后的第一行):

 For /f "delims==" %x in ('set Ext[') Do @Set "%x=" for %x in (*) do @(set /a Ext[%~xx]+=1 >nul) set Ext[ 

示例输出

 Ext[.cmd]=2 Ext[.csv]=1 Ext[.ps1]=2 Ext[.txt]=1 Ext[]=1 

依靠dir命令的汇总输出,这是一个不同的方法:

 for /F %I in ('dir /-C /A:-D *.jpg *.png ^| find "File(s)"') do @set "FILES=%I" echo %FILES% 

在英文系统上, dir返回的最后两行看起来类似于:

  4 File(s) 4096 bytes 0 Dir(s) 4294963200 bytes free 

包含File(s)的行被find命令过滤掉,并由for /F循环捕获。


或者,您可以将dir /B /A:-D的输出dir /B /A:-Dfind /C并通过for /F捕获结果计数:

 for /F %I in ('dir /B /A:-D *.jpg *.png ^| find /C /V ""') do @set "FILES=%I" echo %FILES%