Contar arquivos em uma pasta e subpastas na linha de comando

Contar arquivos em uma pasta e subpastas na linha de comando

Como conto todos os arquivos de um determinado tipo (por exemplo, *.mp3) em uma pasta designada (e opcionalmente subpastas) da linha de comando em uma variável de ambiente?

(sem PowerShell, por favor, apenas comandos em lote)

Responder1

set filesCount=0 & for %f in (*) do @(set /a filesCount+=1 > nul)

Responder2

Contar arquivos em uma pasta e subpastas

Use o seguinte comando:

dir /b *.mp3 /s 2> nul | find "" /v /c > tmp && set /p count=<tmp && del tmp && echo %count%

A variável de ambiente %count%conterá o número de arquivos.

Observação:

  • Remova /sse não quiser contar arquivos em subpastas.

Exemplo (usando *.txt)

Listagem de diretórios para mostrar os 17 arquivos:

F:\test>dir /b *.txt /s
F:\test\abc.txt
F:\test\blackwhite.txt
F:\test\cpu.txt
F:\test\interface.txt
F:\test\Lorem ipsum.txt
F:\test\right.txt
F:\test\rights.txt
F:\test\software.txt
F:\test\tabs.txt
F:\test\test.txt
F:\test\this is inside junction.txt
F:\test\unique.txt
F:\test\xyz.txt
F:\test\sub\abc.txt
F:\test\sub\xyz.txt
F:\test\sub with space\junction sub with space.txt
F:\test\sub with space\xyz.txt

Execute o comando:

F:\test>dir /b *.txt /s 2> nul | find "" /v /c > tmp && set /p count=<tmp && del tmp && echo %count%
17

Leitura adicional

Responder3

Use uma combinação de dire findpara contar os arquivos. Armazene os arquivos em uma variável por meio do forloop. Redirecione a saída do erro para nulocultar File Not Foundo erro.

@echo off
for /f %%i in ('dir *.xlsx /s /b 2^> nul ^| find "" /v /c') do set VAR=%%i
echo %VAR%

Veja as descrições dos parâmetros usando /?for dir, finde for.

Responder4

Você pode aproveitar a /Lopção (lista) do robocopy. Então você não precisa de nenhum complicado para loops ou tubos. É muito rápido também.

robocopy c:\mydir c:\dummy /L /E *.mp3 *.txt
  • c:\mydir: substitua pelo caminho para o diretório que você deseja pesquisar
  • c:\dummy: você pode deixar isso, é apenas um argumento fictício que é ignorado, pois estamos usando/L
  • /L: apenas lista, não copiará/moverá nada.
  • /E: inclui subdiretórios recursivamente. Você pode remover isso se não quiser pesquisar subdiretórios.
  • Se não quiser imprimir a lista de arquivos e diretórios, você pode adicionar /NFL(No Files List) e/ou /NDL(No Dirs List)

Você receberá um bom relatório como abaixo. Basta olhar para a Totalcoluna.

Source : c:\mydir

Files : *.mp3
        *.txt

--------------------------------------------------

{list of all the matching files}

--------------------------------------------------

            Total    Copied   Skipped  Mismatch    FAILED    Extras
 Dirs :         5         5         0         0         0         0
Files :        89        89         0         0         0         0
Bytes :   3.485 g   3.485 g         0         0         0         0

informação relacionada