Nomes de arquivo muito longos e o Windows não pode abrir os arquivos

12

Há um monte de arquivos em uma unidade de rede, em um caminho bastante profundo e os diretórios na maioria dos nomes longos. Eu acho que eles foram criados originalmente quando alguém copiou & colou o diretório raiz desse grupo de arquivos de sua estação de trabalho local para a unidade de rede compartilhada. Eu imagino que na estação de trabalho local, não houve problema para abrir o arquivo, mas agora que eles estão em um caminho mais longo na rede, o Windows não pode abri-los quando clico duas vezes. Eu também tentei copiar os arquivos e renomeá-los para algo mais curto, mas o Windows também não consegue fazer isso.

TL; DR

arquivos da estação de trabalho de alguém em um caminho (hipotético) como este:

C:\Documents and Settings\SomeUser\Files\RootOfLongFileNames\LongSubdirectoryName1\...\VeryLongAndDescriptiveAndSpecificFilename.xls
-----------------------------------------^

agora foram copiados e colados na rede assim:

Q:\Dir1\Dir2\ProjectA\FilesForSomething\SomeotherDirectory\Blahblah\RootOfLongFileNames\LongSubdirectoryName1\...\VeryLongAndDescriptiveAndSpecificFilename.xls
---------------------------------------------------------------------^

E o caminho agora é muito longo para o Windows XP.

Alguma dica de como eu posso ler esses arquivos?

    
por FrustratedWithFormsDesigner 10.01.2012 / 21:46

4 respostas

7

Tente substituir o caminho pelo SUBST.EXE. Ele vem com o Windows:

C:\Users\shufler>subst /?
Associates a path with a drive letter.

SUBST [drive1: [drive2:]path]
SUBST drive1: /D

  drive1:        Specifies a virtual drive to which you want to assign a path.
  [drive2:]path  Specifies a physical drive and path you want to assign to
                 a virtual drive.
  /D             Deletes a substituted (virtual) drive.

Type SUBST with no parameters to display a list of current virtual drives.

O que você deseja fazer é substituir uma das pastas da cadeia por uma letra de unidade:

 C:\>subst X: Q:\Dir1\Dir2\ProjectA\FilesForSomething\SomeotherDirectory\Blahblah\RootOfLongFileNames\LongSubdirectoryName1

Agora, a pasta LongSubdirectoryName1 é acessada na unidade X :. Quando acabar, você pode deletar sua substituição com subst X: /D

Se você precisar disso o tempo todo, adicione-o ao seu script de login.

Outra abordagem seria mapear uma unidade mais abaixo na cadeia de onde Q: é mapeada.

    
por 11.01.2012 / 00:56
6

Você precisará renomear nomes de diretório no caminho até que o nome seja curto o suficiente para o sistema operacional acessar.

Eu navegaria até a primeira pasta cujo nome você pode modificar e renomeá-la para uma única letra e, em seguida, faça o mesmo para cada pasta subseqüente até chegar ao arquivo necessário.

Sobre a necessidade de manter a estrutura: Existem limitações com as quais temos que trabalhar nos sistemas operacionais, e não é bom operar rotineiramente fora desses parâmetros. Qualquer solução rápida agora será apenas um patch que precisará ser executado novamente no futuro. Uma verdadeira solução envolverá a reorganização da estrutura de diretórios, de modo que esse problema extremamente longo de caminho de pasta / nome de arquivo não seja mais necessário.

    
por 10.01.2012 / 23:00
1

Prefixe o caminho com \?\ . Observe que isso não funciona com todos os aplicativos.

    
por 10.01.2012 / 23:43
0

EDIT: Originalmente eu sugeri usar robocopy, mas é claro que isso é XP e não tem pré-instalado.

Não há como você ser capaz de "dar a todos o que eles querem" Se o caminho do arquivo for muito longo, você não poderá fazer nenhuma operação com ele. Do jeito que eu vejo, você tem algumas opções:

  1. Siga as etapas das outras postagens e renomeie os diretórios até que sejam curtos. O bom dos computadores é que você pode escrever um script para fazer isso não apenas para você, mas também para saber quais eram os nomes originais. Mesmo com um script, isso é um pouco demorado.

  2. Obtenha um LiveCD do Linux. Coloque-o no computador e inicialize a partir desse CD. Vá ver o disco do Windows que será montado automaticamente como um sistema de arquivos separado. Obter todos os arquivos que você deseja e colocá-los em uma nova pasta na sua área de trabalho. Compacte essa pasta e coloque-a em um disco rígido externo ou pendrive ou, se a sua unidade de rede permitir copiar de volta para o sistema de arquivos, mova-a para um diretório de nível superior.

por 10.01.2012 / 22:53