使用批处理脚本

时间:2016-02-02 06:42:10

标签: windows batch-file cmd

我有这样的目录结构A-> B-> C,D-> E,F其中A包含B文件夹和一些文本文件,sql文件,日志文件等.B包含C文件夹和许多其他扩展文件。 类似地,E,F也是子目录并包含一些文件。 现在输出应该是这样的: 文件数量: A-10 A / B-15 A / B / C-20 d-25 d / E-30 F-12 感谢您的回复。感谢所有方法。

尝试过:

@ECHO OFF 
SET "rootpath=%~1" 
FOR /D %%D IN ("%~dp0*") DO ( 
    SET cnt=0 
    FOR /F %%K IN ('DIR /A-D /S "%%D" 2^>NUL ^| FIND "File(s)" ^|^| ECHO 0') DO ( SET /A cnt+=%%K ) 
    SETLOCAL EnableDelayedExpansion 
    ECHO %%D: !cnt! 
    ENDLOCAL 
    pause
)

1 个答案:

答案 0 :(得分:1)

您需要一个遍历整个树的递归子例程,并在每个子文件夹中执行相同的计算。这种方法更简单:

编辑:修改了代码以避免子文件夹名称包含空格时出错。

@echo off
setlocal EnableDelayedExpansion

set "base=%cd%\"

rem Accumulate files in the same array element given by its folder
for /R %%a in (*.*) do (
   set "folder=%%~DPa"
   set "folder=!folder:%base%=!"
   set /A "count[!folder: =_!]+=1" 2> nul
)

rem Show the result
for /F "tokens=2,3 delims=[]=" %%a in ('set count[') do (
   echo %%a-%%b
)

有关批处理文件中阵列管理的进一步说明,请参阅:Arrays, linked lists and other data structures in cmd.exe (batch) script