2012-04-19 61 views
3

我試圖用PowerShell命令copy-itemxcopy一個磁盤的內容複製到另一個。PowerShell的:「完全合格的文件名必須少於260個字符」

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

不過,我遇到了以下錯誤:

拷貝項目:指定的路徑,文件名,或者兩者都太長。 完全限定文件名必須少於260個字符,並且 目錄名稱必須少於248個字符。

我得到的這些錯誤足以阻止手動搜索和複製長路徑的文件或文件夾。避免這個問題的最好方法是什麼?

回答

6

據我自動了解這個robocopy交易(至少你必須明確地禁用長路徑的支持)。因此,您可以使用

robocopy h:\ g:\ /E 

如果您對原生命令而不是純粹的PowerShell解決方案不太反感。

通常情況下,您可以將\\?\預先加入到一個路徑中,以允許處理最多32K字符的路徑,但很可能這對.NET沒有幫助。

+0

的BCL隊有長文件的路徑一段時間回來,其中討論了「\\。\?」的選項上支持一系列:[長路徑在.NET中,部分3 1](HTTP://blogs.msdn的.com/b/bclteam /存檔/ 2007/02/13 /長徑-在淨部分-1-的-3- KIM-hamilton.aspx) – 2012-06-24 13:13:11

5

在Codeplex上,Microsoft提供了一個experimental long path wrapper,它提供了一些功能,可以更輕鬆地處理比System.IO命名空間的當前259個字符限制更長的路徑。

如何使用此包裝文件在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

相關問題