it-swarm-pt.tech

Superando restrições máximas de tamanho de caminho de arquivo no Windows

Um de nossos clientes costuma usar nomes de caminhos muito longos (várias pastas aninhadas, com nomes longos) e encontramos rotineiramente "problemas de educação do usuário" para reduzir o caminho para menos de 260 caracteres.

Existe uma solução técnica disponível, podemos pressionar algum tipo de opção no Windows 7 e no Windows 2008 R2 para dizer "sim, ignore esses problemas históricos e faça o nome do caminho de +260 caracteres funcionar".

P.S. Li e fui totalmente indedificado por Nomeando arquivos, caminhos e espaços para nome

36
Christopher Edwards

Os métodos estão lá, mas até a Microsoft recodificar o widget do navegador de arquivos, estamos praticamente presos ao antigo problema. É sub-ideal, mas é assim que funciona.

12
sysadmin1138

Apenas mencionando um truque que não vejo mencionado aqui ainda.

Pegue este arquivo por exemplo:

C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

O caminho completo do arquivo tem 290 caracteres. O Shell (Windows Explorer) e a maioria dos utilitários de linha de comando provavelmente não permitirão que você toque nele.

Use o comando subst da seguinte maneira:

subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"

Agora você pode acessar (e excluir, mover, etc.) o arquivo da seguinte maneira:

X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

E agora que o nome do arquivo tem apenas ~ 235 caracteres, você não encontrará mais os problemas "O nome do arquivo é muito longo".

Na API do Windows, há uma constante infame conhecida como MAX_PATH. MAX_PATH tem 260 caracteres. O sistema de arquivos NTFS, na verdade, suporta caminhos de arquivo de até 32.767 caracteres. E você ainda pode usar nomes de caminho longos de 32.767 caracteres acessando as versões Unicode (ou "ampla") das funções da API do Windows e também prefixando o caminho com \\?\.

MAX_PATH foi gravado em pedra há muito tempo tempo atrás no mundo do Windows. Eu acho que tem algo a ver com os padrões ANSI na época ... mas é uma daquelas coisas que é muito difícil para a Microsoft mudar agora, já que agora temos milhares de programas e aplicativos, incluindo alguns escritos pela própria Microsoft, que usam MAX_PATH e falharia de maneiras novas e estranhas se a constante fosse subitamente alterada. (Estouros de buffer, corrupção de heap, etc.)

28
Ryan Ries

Você pode contornar essa limitação usando a notação \\?\C:. É feio, mas suporta comprimentos de arquivo de até 2 ^ 15.

http://msdn.Microsoft.com/en-us/library/aa365247 (v = vs.85) .aspx # maxpath

10
Chris K

A Microsoft agora tem uma correção disponível para esse início no Windows 10, explicada no artigo Nomeando arquivos, caminhos e espaços para nome artigo do MSDN.

o darthcoder já respondeu com detalhes na solução alternativa da notação \\?\C:, mas agora existe uma chave de registro em HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD) que pode ser usada para remover as limitações do MAX_PATH para um único sistema. O artigo também menciona o suporte ao controle de Diretiva de Grupo em Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths Para organização ou implementação em todo o grupo, se necessário.

9
JimNim