Powershell: «Полное имя файла должно быть меньше 260 символов»

Я пытался использовать команду powershell copy-item как xcopy для копирования содержимого одного диска на другой.

copy-item -Path h:\* -Destination g:\ -Recurse -Force

Однако я столкнулся со следующими ошибками:

Copy-Item : указанный путь, имя файла или оба слишком длинные. Полное имя файла должно быть меньше 260 символов, а имя каталога должно быть меньше 248 символов.

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


person Loom    schedule 19.04.2012    source источник


Ответы (2)


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

robocopy h:\ g:\ /E

если вы не слишком против нативной команды вместо чистого решения PowerShell.

Обычно вы можете добавить \\?\ к пути, чтобы разрешить обработку путей до 32 тыс. символов, но вполне может быть, что это может не помочь с .NET.

person Joey    schedule 19.04.2012
comment
Некоторое время назад команда BCL опубликовала серию статей о поддержке длинных путей к файлам, в которых обсуждается параметр \\?\: Длинные пути в .NET, часть 1 из 3 - person Emperor XLII; 24.06.2012