如何计算目录及其子文件夹中所有子文件夹中的所有文件,但返回子文件夹的名称以及文件计数?

时间:2016-10-20 09:26:28

标签: windows batch-file cmd

希望有人可以帮助我。我有一个文件夹,其中包含许多子文件夹 - 例如:

Business
Chemistry
DT
English

这些文件夹中的每一个都有许多子文件夹。

我想要做的是运行批处理文件,然后输出如下内容:

Business: 24
Chemistry: 542
DT: 298
English: 101

我有一个命令行命令,当在子文件夹中运行时,返回该文件夹和子文件夹中的文件数,但这是一个非常费力的过程,必须运行50次以上的命令。

3 个答案:

答案 0 :(得分:0)

试试这个批处理文件:

@echo off
(
    FOR /D %%G in ("*") DO (
        PUSHD "%%G"
        FOR /F "delims=" %%H in ('dir /a-d /b * ^|find /C /V ""') DO echo %%G : %%H
        POPD
        )
 )>"..\count.txt"
 Start "" "..\count.txt"

答案 1 :(得分:0)

This should work for you, (and should be relatively quick for larger directories):

@Echo Off
SetLocal EnableDelayedExpansion

(Set selDir=C:\Users\Robert\Subjects)

For /D %%A In ("%selDir%\*") Do Call :Sub "%%A"
Timeout -1 1>Nul
Exit/B

:Sub
Set i=3
For /F "EOL=- Tokens=1-3" %%A In (
    'RoboCopy /L /E /NFL /NDL /NJH %1 null *.*') Do (
    If %%B==: (Set/A i-=1
        If !i! Equ 1 Echo(%~nx1 : %%C))

Just make sure you change the path within the parentheses on line four to suit your parent directory.

答案 2 :(得分:0)

假设您的目录位于D:\root\,以下计算每个目录的直接子目录:

@echo off
for /D %%R in ("D:\root\*") do (
    set "NAME=%%~nxR"
    set /A "COUNT=0"
    for /D %%D in ("%%~fR\*") do (
        set /A "COUNT+=1"
    )
    setlocal EnableDelayedExpansion
    echo(!NAME!: !COUNT!
    endlocal
)