檔案名稱太長,無法複製,但沒有說明是哪一個

檔案名稱太長,無法複製,但沒有說明是哪一個

我正在複製一堆文件,但無法複製一些文件,因為名稱太長。有沒有一種簡單的方法來縮短名稱,或者我至少可以知道檔案名稱變得太長的路徑?

編輯:透過一堆文件,我的意思是有兩個目錄,每個目錄包含文件,更多目錄包含更多文件等。

答案1

您可以使用路徑掃描儀找到有問題的文件。 (滾動到底部到舊路徑掃描器)

答案2

我會建議機器人複製,內建於Windows 7.

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

答案3

如果您接受命令列解決方案,cp我包含的實用程序漢密爾頓 C 殼將輕鬆複製您的文件,無需縮短任何內容。 (完全披露:我是作者。)像我的其他基本文件實用程式一樣,它使用長 Unicode 檔名內部支援最大32K字元的路徑長度,這是系統的限制。

如果這是一次性的事情(即使不是),您所需要的只是免費版本。如果遇到問題或需要協助讓它執行您想要的操作,請告訴我。

答案4

要解決此問題,您需要找到完整路徑和檔案名稱超過 255 個字元的違規檔案。由於在批次檔中尋找長度有點麻煩,因此我使用以下 VBScript。

將以下程式碼儲存到名為longpaths.vbs.從 DOS 命令提示字元運行它,其中cscript longpaths.vbs <path> <length>where<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>

一旦您知道了問題文件,您可以重命名它們以使它們更短,重命名該路徑中的資料夾之一,或者(可能)將網路磁碟機對應到該路徑中的子資料夾,這將減少路徑的長度。

相關內容