我复制了一堆文件,但有些文件因为名字太长而无法复制。有没有简单的方法可以缩短文件名,或者至少我能知道文件名太长的路径吗?
编辑:通过一堆文件,我的意思是有两个目录,每个目录包含文件,还有更多的目录包含更多的文件等等。我只是通过 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>
一旦知道问题文件,您就可以重命名它们使它们更短,重命名该路径中的其中一个文件夹,或者(可能)将网络驱动器映射到该路径中的子文件夹,这将减少路径的长度。