当我将一个文件夹递归复制到另一个位置时,我尝试记录一些无法传输的文件。当我右键单击、复制并粘贴文件夹时,我收到一些文件的错误消息“您指定的文件名无效或太长”。
然后我尝试使用 PowerShell 记录无法传输的文件名,但收到消息“Copy-Item:文件名、目录名或卷标语法不正确”。
这是我正在使用的 PowerShell 脚本:
$skippedFiles = @()
$items = Get-ChildItem -Path $sourcePath -Recurse
foreach ($item in $items) {
$destinationItemPath = Join-Path $destinationPath $item.FullName.Substring($sourcePath.Length + 1)
if (Test-Path $destinationItemPath) {
$skippedFiles += "Destination file already exists: $($item.FullName)"
} elseif ($item.Name.Length -gt 255) {
$skippedFiles += "File name too long: $($item.FullName)"
} else {
Copy-Item -Path $item.FullName -Destination $destinationItemPath -ErrorAction SilentlyContinue
}
}
$skippedFiles | Out-File -FilePath $logFilePath
答案1
这并不能完全回答你的问题,但可以展示一些方法解决长文件名。
- 如果复制到支持长文件名的文件系统(如 NTFS),启用长文件名/路径:在 Regedit 中,导航到
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
并创建或编辑 Value DWORDLongPathsEnabled
,将其设置为 1。 - 如果要将文件复制到的文件系统才不是支持长文件名,例如 FAT,使用8.3格式复制。. 例如,对于文件
ALongFilename.txt
,使用xcopy /N *.txt .\destfldr
。