2012-04-19 2 views
3

Я попытался использовать команду powershell copy-item как xcopy для копирования содержимого одного диска на другой.Powershell: «Полное имя файла должно быть менее 260 символов»

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

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

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

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

ответ

6

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

robocopy h:\ g:\ /E 

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

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

+0

Команда BCL несколько раз подряд поддерживала длинные пути файлов, в которой обсуждается опция «\\? \»: [Длинные пути в .NET, часть 1 из 3] (http: //blogs.msdn .com/б/bclteam/архив/2007/02/13/длинный-пути-в-нетто-части-1-в-3-ким-hamilton.aspx) –

5

В Codeplex Microsoft содержит experimental long path wrapper, который предоставляет функции, облегчающие работу с путями, длина которых превышает 259 символов пространства имен System.IO.

Пример того, как скопировать файл с помощью этой оболочки в Powershell:

[reflection.assembly]::loadfile("C:\Users\stackoverflow\Desktop\Microsoft.Experimental.IO.dll") 
[microsoft.experimental.io.longpathfile]::Copy((gi .\myversion.txt).fullname, "C:\users\stackoverflow\desktop\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",$true) 

Другие образцы могут быть найдены here.

Смежные вопросы