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
/s
se 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
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
- encontrar- Procure uma string de texto em um arquivo e exiba todas as linhas onde ela for encontrada.
Responder3
Use uma combinação de dir
e find
para contar os arquivos. Armazene os arquivos em uma variável por meio do for
loop. Redirecione a saída do erro para nul
ocultar File Not Found
o 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
, find
e for
.
Responder4
Você pode aproveitar a /L
opçã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 pesquisarc:\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 Total
coluna.
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