Nome do arquivo longo demais ao copiar para um diretório com caminho de arquivo menor

1

Isso é estranho.

Eu tenho uma instalação meanJs, cujo conteúdo eu copiei para outra pasta.

Caminho da pasta original: C:\work\defaults\mean_0.3.3

Conteúdo do arquivo copiado para: C:\work\defaults\a

Como você pode ver, é óbvio que o conteúdo do arquivo é copiado para uma pasta com um nome mais curto, portanto, o erro de nome de arquivo muito longo não deve vir, mas acontece.

Este é um bug do Windows 10?

Tentei fazer isso com o comando copy-item no powershell e isso faz parte da saída (continua por um tempo):

PS C:\work\defaults> copy-item .\mean_0.3.3\ -destination .\b -recurse
copy-item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260
characters, and the directory name must be less than 248 characters.
At line:1 char:1
+ copy-item .\mean_0.3.3\ -destination .\b -recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (test-delayed-http-upload.js:FileInfo) [Copy-Item], PathTooLongException
    + FullyQualifiedErrorId : CopyDirectoryInfoItemIOError,Microsoft.PowerShell.Commands.CopyItemCommand

copy-item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260
characters, and the directory name must be less than 248 characters.
At line:1 char:1
+ copy-item .\mean_0.3.3\ -destination .\b -recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (test-delayed-stream-auto-pause.js:FileInfo) [Copy-Item], PathTooLongExceptio
   n
    + FullyQualifiedErrorId : CopyDirectoryInfoItemIOError,Microsoft.PowerShell.Commands.CopyItemCommand

copy-item : The specified path, file name, or both are too long. The fully qualified file name must be less than 260
characters, and the directory name must be less than 248 characters.
At line:1 char:1
+ copy-item .\mean_0.3.3\ -destination .\b -recurse
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (test-delayed-stream-pause.js:FileInfo) [Copy-Item], PathTooLongException
    + FullyQualifiedErrorId : CopyDirectoryInfoItemIOError,Microsoft.PowerShell.Commands.CopyItemCommand
    
por Ahmed-Anas 03.01.2016 / 15:03

2 respostas

1

O caminho totalmente qualificado de algum subdiretório (antes ou depois da cópia) é muito longo. Essa é uma limitação do cmdlet (e, até certo ponto, da API que ele segmenta).

A solução mais fácil é usar o Robocopy: link

    
por 08.01.2016 / 21:43
0

Você pode usar o comando robocopy, mas descobri que o método mais fácil (embora um pouco mais lento) é simplesmente zipar a pasta, copiar o zip e descompactá-lo. Como alternativa, você pode mover a pasta muito aninhada até um diretório de nível superior, copiá-la e movê-la de volta para seu local aninhado.

Não sei por que isso funciona, mas de acordo com este artigo windows tem um tamanho máximo para o arquivo nome , mas por algum motivo verifica o tamanho de todo o caminho do arquivo ao copiar.

Assim, o motivo pelo qual o caminho do arquivo foi capaz de ficar tão longo em primeiro lugar foi se ele foi criado manualmente, em vez de copiado. Ou se foi criado a partir de um programa ou qualquer outro método que não envolva cópia. Pelo menos esse é o meu palpite

    
por 15.09.2018 / 22:55