到目前为止,我们用它来计算文件,但它会计算所有文件。
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
的输出通过管道传输到find /C
,并按for /F
捕获结果计数:
for /F %I in ('dir /B /A:-D *.jpg *.png ^| find /C /V ""') do @set "FILES=%I"
echo %FILES%