还报告了子目录中具有文件计数的目录中的文件计数

时间:2012-05-22 12:47:12

标签: dos

我希望DOS命令查找给定目录中的文件数(该计数应该在此目录下具有单独的子目录条目)。

例如,如果Tech是一个目录,它有2个文件和2个子目录(Info Tech,Services),子目录各有2个文件,我的结果应该是

Tech 6
Info Tech 2
Services 2

如果有人可以帮助我使用这样的命令行会很棒......

1 个答案:

答案 0 :(得分:5)

您的要求不明确。

我假设每个文件夹都需要文件夹中的文件总数,包括子文件夹中的文件(递归)。您希望对根文件夹以及所有子文件夹(递归)进行计算。

此代码适用于XP上的所有Windows版本。我不确定它是否适用于真正的MS-DOS。你真的在使用MS-DOS吗?

@echo off
setlocal disableDelayedExpansion
if "%~1"=="" (call :recurse ".") else call :recurse %1
exit /b

:recurse
setlocal
set fileCnt=0
for /d %%D in ("%~1\*") do call :recurse "%%~fD"
for /f %%A in ('dir /b /a-d "%~1\*" 2^>nul ^| find /v /c ""') do set /a fileCnt+=%%A
echo "%~f1"  %fileCnt%
( 
  endlocal
  set /a fileCnt+=%fileCnt%
)
exit /b

代码自下而上列出文件计数的文件夹。如果您希望自上而下列出文件夹,则只需对结果进行排序。假设批处理脚本名为fileCnt.bat,那么

fileCnt | sort