Por que o Windows está relatando essa pasta é muito longa para copiar?

Por que o Windows está relatando essa pasta é muito longa para copiar?
Por que o Windows está relatando essa pasta é muito longa para copiar?

Vídeo: Por que o Windows está relatando essa pasta é muito longa para copiar?

Vídeo: Por que o Windows está relatando essa pasta é muito longa para copiar?
Vídeo: Google Titan Security Key Bundle | How to Set Up Advanced Online Protection - YouTube 2024, Abril
Anonim
Se você trabalha com o Windows por tempo suficiente, especialmente com pastas e arquivos com nomes longos, você se depara com um erro bizarro: o Windows informará que o caminho da pasta ou o nome do arquivo é muito longo para um novo destino ou até mesmo um apagamento. Qual é o problema?
Se você trabalha com o Windows por tempo suficiente, especialmente com pastas e arquivos com nomes longos, você se depara com um erro bizarro: o Windows informará que o caminho da pasta ou o nome do arquivo é muito longo para um novo destino ou até mesmo um apagamento. Qual é o problema?

Hey How-To Geek!

So the other day, I was reorganizing some files on my computer, creating folders, that kind of stuff. Then, when I was moving some files into a folder, I get a message, stating that the resulting folder path would be too long. I was confused. I know that every single OS since DOS supports Long Filenames, yet Windows claims that the path is too long? Why does this happen?

Sincerly,

Mr. Disorganized

O problema que você está enfrentando é uma infeliz interseção de dois sistemas que, em casos como esse, geram um erro. Para entender exatamente de onde o erro vem, precisamos nos aprofundar no histórico dos Long Filenames (LFN) e como o Windows interage com eles antes de nos aprofundarmos nas soluções.

Long nomes de arquivo foram introduzidos, através da arquitetura do MS-DOS subjacente, no Windows 95. O novo sistema LFN permitido para nomes de arquivo e diretório de até 255 caracteres. Essa foi uma expansão bem-vinda do sistema de nomes de arquivos anterior, geralmente chamado de 8.3 filenaming, porque o nome estava limitado a oito caracteres e a uma extensão de três dígitos, mas também conhecido como Short Filename (SFN). Como você pode imaginar, naquela época ainda havia muitos aplicativos baseados em DOS e havia mais do que algumas dores de cabeça tentando fazer com que os LFNs mais novos e os SFNs legados funcionassem bem uns com os outros. Se você já se deparou com um disquete ou CD-ROM antigo com arquivos estranhamente truncados (como abcdef ~ 1.txt), esse nome de arquivo foi cortado por algum aplicativo legado que usa SFN de algum LFN mais longo e sem suporte (como abcdefghijk. TXT).

Estamos muito longe de meados da década de 1990, no entanto, e toda a coisa do Long Filename é (na maior parte) firmemente solucionada. Se você estiver executando uma versão do Windows nos últimos 10 anos, provavelmente você nunca se deparará com um conflito de tamanho de nome de arquivo como o que costumamos fazer nos dias do DOS / Windows 95. Dito isso, ainda encontramos soluços, como você descobriu com o seu projeto de limpeza de disco. Mas por que? Se o sistema de nome de arquivo longo do Windows oferecer suporte a pastas e nomes de arquivo de até 255 caracteres por componente, em qual parede você está executando? Não podemos culpar o NTFS (o sistema de arquivos que a grande maioria das máquinas modernas usa), pois o NTFS suportará um encadeamento de pastas e nomes de arquivos até um comprimento total do caminho de 32.767 caracteres. Isso excede em muito a típica estrutura de diretórios que a maioria dos usuários precisaria.

Onde tudo desmorona é uma restrição artificial do Windows empilha sobre o sistema LFN / NTFS: a variável MAX_PATH. A variável MAX_PATH especifica que uma estrutura de diretório completa no Windows não pode exceder o total de 260 caracteres, incluindo a letra da unidade, dois-pontos, barra invertida e folga nula no final. Assim, você tem apenas um potencial MAX_PATH real de 256 caracteres, por exemplo, C: o seu caminho de 256 caracteres.

Então, o que aconteceu quando você estava limpando seu computador é que você tinha um diretório com um caminho já longo (porque os nomes das pastas eram longos, os nomes dos arquivos eram longos, ou ambos), e quando você tentou mover um ou mais esses diretórios em outro diretório com um caminho longo, o comprimento total do nome do caminho excedeu o limite de 260 caracteres imposto pela variável MAX_PATH.

Agora você pode estar pensando “Ah-hah! Vamos apenas mudar a variável MAX_PATH e resolver o problema!”Infelizmente, não é tão simples assim. A variável MAX_PATH não é apenas essencialmente codificada no Windows, mas, mesmo que você passasse pelo enorme incômodo de alterá-la, acabaria quebrando tanto que não valeria a pena. Muitos aplicativos esperam que a variável path seja o que o Windows há muito especificava. Nós não podemos sair por aí mudando sem criar uma bagunça enorme.

Onde isso te deixa? Bem, a solução mais simples é apenas editar os dados do caminho. Por exemplo, se você tem uma tonelada de artigos salvos onde o aplicativo / extensão que você usou para salvá-los da web criou um diretório que era o título completo do artigo + o lead do artigo e o próprio nome do arquivo é o título completo do artigo + o artigo principal, seria muito simples atingir ou exceder o MAX_PATH com um único salvamento. A edição desses títulos enormes de pastas e artigos até um tamanho mais razoável é uma maneira fácil de corrigir o problema.

Se você tiver um grande número de arquivos com um longo caminho e não quiser editá-los todos (ou se quiserexcluir uma tonelada de diretórios antigos que são muito longos para o Windows lidar quando restritos pela variável MAX_PATH), há um trabalho de linha de comando. Embora o Windows seja restrito pela variável MAX_PATH, os engenheiros do Windows perceberam que haveria situações em que os usuários precisariam lidar com nomes de caminho mais longos. Como tal, a API do Windows tem uma função para lidar com caminhos extremamente longos.

Para aproveitar essa API e usar ferramentas de linha de comando em pastas / nomes de arquivo difíceis de administrar, basta anexar o nome do diretório com alguns caracteres extras. Por exemplo, se você tivesse uma estrutura de diretório enorme que desejasse excluir (mas recebesse um erro devido à duração do caminho quando a tentasse), você poderia alterar o comando de:

rmdir c:documentssome-really-super-long-folder-name-scheme

para:

rmdir \?c:documentssome-really-super-long-folder-name-scheme

A chave é a adição do

?

porção antes do início do caminho do arquivo; isso instrui o Windows a desconsiderar as limitações impostas pela variável MAX_PATH e a interagir com o caminho que você acabou de fornecer, conforme fornecido diretamente pelo sistema de arquivos subjacente (que pode suportar claramente um caminho mais longo).Como sempre, tenha cuidado no prompt de comando para evitar a exclusão acidental de arquivos ou diretórios que você pretendia deixar intactos.

Se você tiver uma visão geral sobre esse problema, consulte este artigo da biblioteca do Microsoft Developer Network, Nomeando arquivos, Caminhos e Espaços de Nomes, para obter mais informações sobre o que está acontecendo nos bastidores.

Tem uma pergunta tecnológica urgente? Envie-nos um e-mail para [email protected] e faremos o possível para atendê-lo.

Recomendado: