1

Это странно

У меня есть установка MeanJs, содержимое которой я скопировал в другую папку.

Исходный путь к папке: C:\work\defaults\mean_0.3.3

Содержимое файла копируется в: C:\work\defaults\a

Как вы можете видеть, очевидно, что содержимое файла копируется в папку с более коротким именем, поэтому слишком длинное имя файла не должно появляться, но это происходит.

Это ошибка Windows 10?

Попытался сделать это с помощью команды copy-item на powershell, и это часть вывода (он продолжается некоторое время):

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

2 ответа2

2

Полный путь к некоторому подкаталогу (до или после копирования) слишком длинный. Это ограничение командлета (и, в некоторой степени, API, на который он ориентирован).

Самый простой обходной путь - использовать Robocopy: https://technet.microsoft.com/en-us/library/cc733145.aspx

0

Вы можете использовать команду robocopy, но я обнаружил, что более простой (хотя и немного более медленный) метод состоит в том, чтобы просто сжать папку, скопировать ее и распаковать. В качестве альтернативы вы можете переместить сильно вложенную папку в каталог более высокого уровня, скопировать ее, а затем переместить обратно во вложенную папку.

Не уверен, почему это работает, но согласно этой статье окна имеют максимальную длину имени файла, но по какой-то причине проверяет длину всего пути к файлу при копировании.

Таким образом, причина, по которой ваш путь к файлу был настолько длинным, была в том, что он был создан вручную, а не скопирован. Или, если он был создан из программы, или любым другим методом, который не включает копирование. По крайней мере, это мое предположение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .