文件名太长,无法复制,但没有说明是哪一个

文件名太长,无法复制,但没有说明是哪一个

我复制了一堆文件,但有些文件因为名字太长而无法复制。有没有简单的方法可以缩短文件名,或者至少我能知道文件名太长的路径吗?

编辑:通过一堆文件,我的意思是有两个目录,每个目录包含文件,还有更多的目录包含更多的文件等等。我只是通过 ctrl+c 进行复制

答案1

您可以使用路径扫描仪查找有问题的文件。(滚动到底部的旧路径扫描仪)

答案2

我会建议Robocopy,内置于Windows 7

robocopy <Source> <Destination> [<File>[ ...]] [<Options>]

答案3

如果你对命令行解决方案满意,cp我附带的实用程序汉密尔顿C壳可以轻松复制文件,而无需缩短任何内容。(完全披露:我是作者。)像我的其他基本文件实用程序一样,它使用长 Unicode 文件名内部支持最多 32K 个字符的路径长度,系统限制。

如果这是一次性的事情(也可能不是),你所需要的就是免费版本。如果遇到问题或者需要帮助以达到您想要的效果,请告诉我。

答案4

要解决这个问题,您需要找到完整路径和文件名大于 255 个字符的有问题的文件。由于在批处理文件中查找长度有点麻烦,因此我使用了以下 VBScript。

将下面的代码保存到名为的文件中longpaths.vbs。从 DOS 命令提示符运行以下命令,其中cscript longpaths.vbs <path> <length><path>文件夹的位置(如果有空格,请不要忘记将其括在引号中),<length>是应在其上方标记的路径的长度。

代码如下:

Option Explicit
If WScript.Arguments.Count <> 2 Then
    WScript.Echo "Usage: " & WScript.ScriptName & " <path> <max length>"
    WScript.Quit
End If
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(WScript.Arguments(0)) = False Then
    WScript.Echo WScript.Arguments(0) & " - Invalid path or no such folder."
    WScript.Quit
End If
Dim oFolder : Set oFolder = fso.GetFolder(WScript.Arguments(0))
Dim iLength : iLength = CInt(WScript.Arguments(1))
Dim iCount : iCount = 0
WScript.Echo "Looking for paths longer than " & iLength & " characters in " & oFolder.Path
On Error Resume Next
Call ScanFolder(oFolder)
On Error Goto 0
WScript.Echo "Found " & iCount & "."
WScript.Quit
Sub ScanFolder(oScanFolder)
    Dim oFile : For Each oFile in oScanFolder.Files
        If Len(oFile.Path) > iLength Then
            WScript.Echo oFile.Path
            iCount = iCount + 1
        End If
    Next
    For Each oFile in oScanFolder.SubFolders
        Call ScanFolder(oFile)
    Next
End Sub

使用方法和输出示例:

D:\Development>cscript longpath.vbs c:\Windows 210
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

Looking for paths longer than 210 characters in C:\Windows
C:\Windows\assembly\GAC_MSIL\Microsoft.Security.ApplicationId.Wizards.AutomaticRuleGenerationWizard.resources\6.1.0.0_en_31bf3856ad364e35\Microsoft.Security.ApplicationId.Wizards.AutomaticRuleGenerationWizard.resources.dll
Found 1.

D:\Development>

一旦知道问题文件,您就可以重命名它们使它们更短,重命名该路径中的其中一个文件夹,或者(可能)将网络驱动器映射到该路径中的子文件夹,这将减少路径的长度。

相关内容