Um diretório FAT32 pode ter 65.536 entradas de diretório.
Cada arquivo e subdiretório leva de duas a treze entradas, dependendo do tamanho do nome.
Portanto, na situação mais otimista, sua lixeira pode conter 65.536 / 2 = 32768 arquivos + diretórios se todos eles tiverem nomes de arquivos na faixa de 8.3. (Nomes curtos)
Seus 31594 arquivos + 53 diretórios parecem atingir o limite.
Provavelmente existem alguns arquivos que levam > 2 entradas devido a nomes de arquivos mais longos.
Editar:
As especificações do FAT32 estão disponíveis aqui:
link
Ele fornece detalhes sobre tudo, incluindo a estrutura de diretórios e a maneira como os Long File Names (LFNs) são armazenados nos diretórios. Basicamente, há uma entrada de diretório que sempre mantém a versão curta (8.3) do nome do arquivo. E como o Windows precisa de distinção entre maiúsculas e minúsculas para os Nomes de Arquivos Longos (LFNs), ele recebe uma entrada de diretório separada para os LFNs (ou vários se tiverem mais de 13 caracteres).
In order to meet the goals of locality-of-access and transparency, the long directory entry is defined as a short directory entry with a special attribute.
Editar # 2:
Eu fiz alguns testes em uma VM com o Windows XP e uma unidade FAT32 (com a lixeira no máximo).
Em um diretório data
eu criei um subdiretório test
após o qual eu executei este arquivo em lote:
@echo off
if "%1"=="####" goto %1
for %%a in (0 1 2 3 4 5 6 7 8 9 A B C D E F) do call %0 #%1 %2 %3 %4 %%a
goto EOF
:####
echo %2%3%4%5
echo test > test\%2%3%4%5
:EOF
Resultando em arquivos 65534 (somente com nomes abreviados).
Como esperado, não foi possível adicionar os dois últimos arquivos ( FFFE
e FFFF
) por causa das duas entradas de diretório ( .
e ..
). Então, .
e ..
levam apenas 2 entradas, é bom saber para mais tarde)
Em seguida, selecionei mais de 45.000 arquivos e os deletei no Explorer. (Demorou um pouco para coletar as informações antes de excluir:)
Como os nomes de arquivos na lixeira são De1
, De2
etc., esses são nomes de arquivos longos (devido ao caso misto). Explorer deu um erro após a exclusão de 32765 arquivos.
O dir /a/x
me deu 32767 arquivos e 2 diretórios.
32765 arquivos do usuário (com LFN ), um INFO2
e desktop.ini
(ambos sem LFN).
(32765 * 2) = 65530 + 2 (sem LFN) + 2 entradas de diretório = 65534
Mmmm, ainda 2 curtos;)
Com o 65534, ele poderá adicionar mais 1 (com LFN). Então eu acho que o Windows pode precisar de uma entrada gratuita extra para algum arquivo temporário.
Mas, como você pode ver, o limite é 65530 entradas de diretório das quais cada arquivo ocupa 2.
(Então, 32765 arquivos porque os nomes de arquivos resultantes são mistos e ainda se a extensão for maior que 3).
Quando eu testei isto os nomes dos arquivos eram todos De1
, De2
etc ... (os originais onde todos os arquivos sem extensão) Seus nomes de arquivos possuem extensões. Se eles tiverem extensões mais longas (> 3), isso pode exigir mais entradas, pois o Windows preserva a extensão na lixeira.
Mas é realmente estranho a Microsoft não ter optado apenas por nomes curtos na lixeira, porque os nomes de arquivos (originais) devem ser armazenados em INFO2
.
Editar # 3:
Acabei de confirmar que o mecanismo de exclusão do Windows precisa de uma entrada de diretório extra.
Eu fiz xcopy e:\recycled\*.* e:\test\ /e/s/h
com uma lixeira completa, copiando todos os arquivos (32767 arquivos) da lixeira para um diretório de teste.
Eu ainda posso criar 1 arquivo De_test1.txt
(LFN) em e:\test
. A criação de De_test2.txt
gerou um erro.
Então, "Windows delete" deve ter o suficiente para criar mais 1 arquivo (LFN), mas por causa de algo interno, não pode.
Portanto, para pastas normais , o limite é 65536 -2 para as entradas .
e ..
= 65534.
e para a lixeira é 65536 -2 para .
e ..
e -2 para desktop.ini
e INFO2
e -2 para um temp.file (?) = 65530 entradas
e com 65530 entradas, é um máximo de 32765 arquivos (e menos se as extensões forem > 3).