使用批处理文件计算文件,文件夹和子文件夹的数量

时间:2019-02-10 19:45:34

标签: batch-file

我正在尝试在本地驱动器上的特定位置创建所有文件夹的列表。下面的代码计算文件的数量。我将如何修改它以便计数包括文件和文件夹而不仅仅是文件

@echo off
setlocal enableextensions disabledelayedexpansion

set "root=%cd%"

set "folder="
for %%r in ("%root%") do (
    set "rootDrive=%%~dr\" 
    if not defined rootDrive set "rootDrive=\\"
    for /f "delims=" %%a in ('
        dir /s /a "%%~fr.\*" 2^>nul ^| findstr /r /c:"^  " /c:"^ .*\\."
    ') do for /f "tokens=1,* delims=\" %%b in ("%%~a") do if not "%%c"=="" (
        set "folder=%%c"
    ) else if defined folder (
        for /f %%d in ("%%~a") do (
            setlocal enabledelayedexpansion
            echo(!rootDrive!!folder! : %%d
            endlocal
        )
        set "folder="
    )
) >> output.txt

1 个答案:

答案 0 :(得分:0)

您可以尝试一下,未经测试,在大型目录结构上可能要花费一些时间

csv

注意:由于该文件旨在从当前目录运行,因此@(For /F Delims^=^ EOL^= %%A In ('Dir/W/A-L 2^>Nul')Do @Set/A_f=_d,_d=%%A 2>Nul Set/A_d-=2&Call Set/P"=%CD% : %%_f%% : %%_d%%"<Nul&Echo( For /F Delims^=^ EOL^= %%A In ('Dir/B/S/AD-L 2^>Nul')Do @( For /F Delims^=^ EOL^= %%B In ('Dir/W/A-L "%%A" 2^>Nul' )Do @Set/A_f=_d,_d=%%B 2>Nul Set/A_d-=2&Call Set/P"=%%A : %%_f%% : %%_d%%"<Nul&Echo())>"output.txt" 文件将计入其自己的ouptut中。

[编辑/]

我想您也可以使用延迟扩展来执行相同的操作,这可以使处理速度加快一小部分。这是对上述内容的修改,其中使用了延迟扩展,仅出于此目的,它也以“相对”格式生成输出:

output.txt