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".
PS: Li e fui totalmente indeditado por nomear arquivos, caminhos e espaços para nome
windows
windows-server-2008
windows-7
ntfs
Christopher Edwards
fonte
fonte
Respostas:
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.
fonte
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
subst
comando da seguinte maneira:Agora você pode acessar (e excluir, mover, etc.) o arquivo assim:
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 com 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 há muito tempo no mundo 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 usamMAX_PATH
e falharia de maneiras novas e estranhas se a constante fosse subitamente alterada. (Estouros de buffer, corrupção de heap, etc.)fonte
subst
uso de junções de diretório, que pode ser mais conveniente para a limpeza se você estiver apenas procurando fazer algumas alterações rápidas. Eu uso Fazer a ligação Shell Extension , mas você pode simplesmente usar omklink
comando assim:mklink /J C:\Wow "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow"
.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
fonte
c:\usr-data
para `c: \ Users \ VeryLongUserName \ LongFolderName` e dizer a ele para usar o primeiro, mas se ele nomear regularmente pastas com caracteres de 40 e poucos, isso não ajudará ...A Microsoft agora tem uma correção disponível para esse início no Windows 10, explicada no artigo MSDN sobre nomes de arquivos, caminhos e espaços para nome .
O darthcoder já respondeu com detalhes sobre a solução alternativa da
\\?\C:
notação, mas agora existe uma chave de registro naHKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)
qual 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 naComputer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths
organização ou implementação em todo o grupo, se necessário.fonte