Recuento de archivos en un directorio con recuento de archivos en subdirectorios también informado

Quiero que el comando DOS encuentre el recuento de archivos en un directorio dado (el recuento debe tener entradas separadas para los subdirectorios de este directorio).

Por ejemplo, si Tech es un directorio y tiene 2 archivos y 2 subdirectorios (Info Tech, Services) y los subdirectorios tienen 2 archivos cada uno, mi resultado debería verse así

Tech 6
Info Tech 2
Services 2

Sería genial si alguien pudiera ayudarme con esa línea de comando...

preguntado el 22 de mayo de 12 a las 13:05

Y si Servicios también tiene dos subdirectorios con 2 archivos cada uno, entonces Servicios debería mostrar 6 y Tech ahora tendría 10. -

si dbenham También debería imprimir el recuento de esos dos subdirectorios:

1 Respuestas

Sus requisitos no están claros.

Supongo que para cada carpeta desea la cantidad total de archivos en la carpeta, incluidos los archivos en las subcarpetas (recursivo). Desea hacer ese cálculo para la carpeta raíz, así como para todas las subcarpetas (recursivo).

Este código funciona en todas las versiones de Windows desde XP en adelante. No estoy seguro de si funciona en MS-DOS verdadero. ¿Realmente estás usando 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

El código enumera las carpetas con el recuento de archivos de abajo hacia arriba. Si desea que las carpetas se enumeren de arriba hacia abajo, simplemente ordene los resultados. Suponiendo que el script por lotes se llame fileCnt.bat, entonces

fileCnt | sort

contestado el 22 de mayo de 12 a las 16:05

Impresionante dbenham... Muchas gracias por ayudarme aquí. - user1087661

Funciona en Windows NT 4 y siguientes (Windows 2000, XP, Vista, 7, etc) ya que requiere el intérprete de comandos cmd.exe. Las versiones anteriores de Windows (Me, 98, 95) y el simple MS-DOS solo tienen el intérprete de command.com que no comprende extensiones de comando como SETLOCAL. - Costel

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.