2

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

例如,如果 Tech 是一个目录,它有 2 个文件和 2 个子目录(Info Tech、Services),并且每个子目录有 2 个文件,我的结果应该如下所示

Tech 6
Info Tech 2
Services 2

如果有人可以用这样的命令行帮助我,那就太好了......

4

1 回答 1

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
于 2012-05-22T15:58:10.253 回答