Contar directorios de una carpeta compartida

Estoy intentando contar las carpetas de varias rutas, sin embargo, siempre el resultado es 0, pero si hay carpetas, una de las rutas por ejemplo es: \\172.30.173.240\ImagesForPassages5\2-2-1\2022\07\19\13

@echo off
FOR /F %%i IN (out.txt) DO (
    @echo %%i 
dir /a:d /s /b ""%%i | find /c ":\"
)
PAUSE

Usando el código de manera local funciona perfectamente, pero al utilizarlo con la ruta descrita no funciona.

2 respuestas

Respuesta
1

En el bat que aportas no queda claro que es el archivo OUT.TXT. Imagino que es un archivo con diferentes rutas a las que quieres aplicarles el comando DIR. Respecto a las rutas de red hay que tener en cuenta que el FIND que aplicas no es válido para contar directorios o carpetas porque el comando DIR en esos casos no saca el path como ":\", como puedes comprobar si ejecutas el comando:

dir /a:d /s /b \\172.30.173.240\ImagesForPassages5\2-2-1\2022\07\19\13

Y no entiendo la sintaxis del comando DIR cuando indica ""%%i. Te propongo que pruebes el BAT siguiente:

@echo off
FOR /F %%i IN (out.txt) DO (
    echo %%i 
    dir /a:d /s /b "%%i" | find /c "%%i"
)
PAUSE

Perdón, creo que falta un TOKENS en el FOR, al menos si alguna de las carpetas puede contener espacios. Sería:

@echo off
FOR /F "TOKENS=*"%%i IN (out.txt) DO (
    echo %%i 
    dir /a:d /s /b "%%i" | find /c "%%i"
) 
PAUSE

¡Gracias! 

Una última pregunta, como puedo guardar los datos generados solo los números en un .txt

Si solo quieres los resultados en un archivo, digamos RESULT.TXT, podría ser:

@echo off
del /q result.txt>nul 2>&1
FOR /F "TOKENS=*" %%i IN (out.txt) DO (
    echo %%i 
    dir /a:d /s /b "%%i" | find /c "%%i" >>result.txt
) 
PAUSE

Si quieres algo más de información, por ejemplo <directorio> <resultado> podría ser así:

@echo off
Setlocal EnableDelayedExpansion
del /q result.txt>nul 2>&1
del /q temp.txt>nul 2>&1
FOR /F "TOKENS=*" %%i IN (out.txt) DO (
    dir /a:d /s /b "%%i" | find /c "%%i" >temp.txt
    set /p resultado=<temp.txt
    echo %%i !resultado!>>result.txt
)
PAUSE
Respuesta
1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas