我想要DOS命令查找给定目录中的文件数(计数应该具有此目录下的子目录的单独条目)。目录中文件的计数同时报告子目录中的文件数
对于例如,如果技术是一个目录,它有2个文件,和2个子目录(信息技术,服务)和子目录各有2个文件,我的结果应该
Tech 6
Info Tech 2
Services 2
如果有人可以用这样的命令行来帮助我,那将会很棒......
我想要DOS命令查找给定目录中的文件数(计数应该具有此目录下的子目录的单独条目)。目录中文件的计数同时报告子目录中的文件数
对于例如,如果技术是一个目录,它有2个文件,和2个子目录(信息技术,服务)和子目录各有2个文件,我的结果应该
Tech 6
Info Tech 2
Services 2
如果有人可以用这样的命令行来帮助我,那将会很棒......
您的要求不明确。
我假设为每个文件夹你想要文件夹中的文件总数,包括子文件夹中的文件(递归)。你想为根文件夹以及所有子文件夹(递归)进行计算。
此代码适用于Windows上的所有版本的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
真棒dbenham ..非常感谢你帮助我在这里。 – user1087661
它适用于Windows NT 4和下一个(Windows 2000,XP,Vista,7等),因为它需要cmd.exe命令解释器。以前的Windows版本(Me,98,95)和普通的MS-DOS只有command.com解释器,它不理解像SETLOCAL这样的命令扩展。 – Costel
如果服务也有两个子目录,每个文件有两个文件,那么服务应该显示6,Tech现在有10个? – dbenham
是的dbenham。它也应该打印这两个子目录的数量 – user1087661