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的输出通过管道传输到find /C,并按for /F捕获结果计数:

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

最新更新