Como determinar o número total de arquivos em pastas e subpastas, por extensão?

1

Como se pode atravessar uma pasta e suas subpastas (diretório e seus subdiretórios) e listar quantos arquivos de uma determinada extensão existem no total, para cada extensão que ocorre nessas pastas?

Algo parecido com isso,

folders               48 total
.jpg                2842 total
.gif                 142 total
.CR2                2842 total

A soma acima deve ser igual ao total em dir/s , que lista todos os arquivos & subpastas em alguma pasta.

    
por Rook 16.10.2015 / 09:53

4 respostas

2

Se não precisar ser a linha de comando, você pode usar o WinDirStat. link

    
por 16.10.2015 / 11:24
1

O próximo snippet de código pode ajudar:

@ECHO OFF >NUL
SETLOCAL EnableExtensions
rem EnableDelayedExpansion
rem next line: clear/delete all '_filesTotal' environment variables
for /F "delims==" %%G in ('set _filesTotal 2^>NUL') do set "%%G="
rem next line: initialize '_foldersTotal' environment variable
set "_foldersTotal=0"
pushd "folder where count"
for /F "delims=" %%G in ('dir /B /S /A') do (
  if exist "%%~G\" (
    rem folder %%G
    set /A "_foldersTotal+=1"
  ) else (
    rem   file %%G
    if "%%~xG"=="" (set /A "_filesTotal.+=1") else (set /A "_filesTotal%%~xG+=1")
  )
)
rem next two lines: display raw results
echo %CD%
set _foldersTotal
set _filesTotal
popd

Recursos (leitura obrigatória):

por 16.10.2015 / 11:24
0

Recomendo que você considere uma abordagem Powershell à sua pergunta. É um pouco menos linhas de código com a capacidade de classificar a saída…

$foldercount = 0
$hash = @{}
Get-ChildItem -Path "C:\Code Samples" -Recurse | ForEach-Object { 
    if ($_.Attributes -eq 'Directory') 
        { 
        ++$foldercount
        }
    else
        {
        if ($hash.ContainsKey($_.Extension)) 
            { $count = $hash.Get_Item($_.Extension); ++$count; $hash.Set_Item($_.Extension, $count) }
        else
            { $hash.Add($_.Extension, 1) } 
        }
}

Write-Host $foldercount folders
$hash.GetEnumerator() | Sort-Object Value -descending

E, produz essa saída para minha pasta de amostra ...

90 folders

Name                           Value                                                                                                                                                                                                 
----                           -----                                                                                                                                                                                                 
.tlog                          186                                                                                                                                                                                                   
.h                             72                                                                                                                                                                                                    
.obj                           56                                                                                                                                                                                                    
.cpp                           54                                                                                                                                                                                                    
.pdb                           26                                                                                                                                                                                                    
.manifest                      24                                                                                                                                                                                                    
.res                           23                                                                                                                                                                                                    
.rc                            22                                                                                                                                                                                                    
.log                           15                                                                                                                                                                                                    
.lastbuildstate                12                                                                                                                                                                                                    
.ipch                          12                                                                                                                                                                                                    
.ico                           12                                                                                                                                                                                                    
.exe                           12                                                                                                                                                                                                    
.idb                           12                                                                                                                                                                                                    
.vcxproj                       11                                                                                                                                                                                                    
.ilk                           11                                                                                                                                                                                                    
.user                          11                                                                                                                                                                                                    
.sdf                           11                                                                                                                                                                                                    
.zip                           11                                                                                                                                                                                                    
.filters                       11                                                                                                                                                                                                    
.sln                           11                                                                                                                                                                                                    
.pch                           11                                                                                                                                                                                                    
.txt                           8                                                                                                                                                                                                     
.gif                           8                                                                                                                                                                                                     
.rc2                           8                                                                                                                                                                                                     
.aps                           8                                                                                                                                                                                                     
.bmp                           7                                                                                                                                                                                                     
.dsw                           6                                                                                                                                                                                                     
.dsp                           6                                                                                                                                                                                                     
.png                           5                                                                                                                                                                                                     
.css                           5                                                                                                                                                                                                     
.html                          4                                                                                                                                                                                                     
.old                           4                                                                                                                                                                                                     
.XML                           4                                                                                                                                                                                                     
.vcproj                        4                                                                                                                                                                                                     
.xslt                          4                                                                                                                                                                                                     
.exp                           3                                                                                                                                                                                                     
.dll                           3                                                                                                                                                                                                     
.lib                           3                                                                                                                                                                                                     
.clw                           2                                                                                                                                                                                                     
.def                           2                                                                                                                                                                                                     
.opt                           2                                                                                                                                                                                                     
.ncb                           2                                                                                                                                                                                                     
.plg                           2                                                                                                                                                                                                     
.recipe                        2                                                                                                                                                                                                     
.rtf                           1                                                                                                                                                                                                     
.jpg                           1                                                                                                                                                                                                     
.h original                    1                                                                                                                                                                                                     
.bat                           1                                                                                                                                                                                                     
.js                            1                                                                                                                                                                                                     
.cpp original                  1                                                                                                                                                                                                     
.DPbcd                         1                                                                                                                                                                                                     
    
por 16.10.2015 / 15:41
0

Atravessando pastas e contando arquivos

How could one transverse through a folder and its subfolders (directory and its subdirectories) and list how many files of a certain extension there is in those in total, for every extension that occurs in those folders?

Use os três arquivos em lote a seguir.

Notas:

  • Atualmente, não conta arquivos sem extensão (que parecem estar fora do resumo da pergunta).
  • Alguns arquivos podem ser contados várias vezes se os nomes 8.3 não estiverem desativados .

Total.cmd :

@echo off
setlocal enabledelayedexpansion
rem count directories
call CountDirs
rem get list of extensions
for /f "usebackq" %%i in ('dir /a:-d /b /s') do (
  set _extension=%%~xi
  if [!_extension!] neq [] echo !_extension:~1! >> %temp%\extensions 
  )
rem get list of unique extensions
set _last=
for /f "usebackq" %%j in ('sort %temp%\extensions') do (
  set _this=%%j
  if [!_last!] neq [!_this!] echo !_this! >> %temp%\unique
  set _last=%%j
  )
rem count the files
for /f %%k in (%temp%\unique) do (
  call CountFiles %%k
  )
rem cleanup
if exist %temp%\extensions del %temp%\extensions
if exist %temp%\unique del %temp%\unique
endlocal

CountDirs.cmd :

@echo off
rem count directories
dir /a:d /b /s | find "" /c /v > %temp%\count
set /p _count=<%temp%\count
rem cleanup
del %temp%\count
echo folders %_count% total

CountFiles.cmd :

@echo off
rem count files matching %1
dir /b *.%1 /s 2> nul | find "" /v /c > %temp%\count
set /p _count=<%temp%\count
rem cleanup
del %temp%\count
echo .%1 %_count% total

Exemplo de saída :

F:\test>Total.cmd
folders 15 total
.1 1 total
.bat 1 total
.cmd 10 total
.csv 6 total
.exe 4 total
.html 1 total
.java 1 total
.jpg 1 total
.js 1 total
.mak 1 total
.php 1 total
.ps1 1 total
.sh 1 total
.txt 19 total
.txt1 2 total
.zip 1 total
F:\test>

Leitura Adicional

  • Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
  • dir - Exibe uma lista de arquivos e subpastas.
  • enabledelayedexpansion - Expansão com atraso fará com que as variáveis sejam expandidas em tempo de execução e não no tempo de análise.
  • para / f - Comando Loop contra os resultados de outro comando.
  • if - Realize condicionalmente um comando.
  • parâmetros - Um argumento de linha de comando (ou parâmetro) é qualquer valor passado para um script em lote.
  • definir - Exibir, definir ou remover variáveis de ambiente do CMD. As alterações feitas com o SET permanecerão apenas pela duração da sessão atual do CMD.
por 16.10.2015 / 13:08