Der Dateiname ist zu lang zum Kopieren, aber es wird nicht angegeben, welcher.

Der Dateiname ist zu lang zum Kopieren, aber es wird nicht angegeben, welcher.

Ich habe eine Reihe von Dateien kopiert, konnte aber einige nicht kopieren, da deren Namen zu lang waren. Gibt es eine einfache Möglichkeit, die Namen zu kürzen, oder kann ich zumindest den Pfad erfahren, ab dem der Dateiname zu lang wird?

EDIT: mit Haufen von Dateien meine ich, dass es zwei Verzeichnisse gibt, die jeweils Dateien enthalten, und weitere Verzeichnisse, die weitere Dateien enthalten usw. Ich kopiere einfach mit Strg+C

Antwort1

Sie könnenPfadscannerum die fehlerhaften Dateien zu finden. (Scrollen Sie nach unten zum Old Path Scanner)

Antwort2

ich würde vorschlagenRobocopy, eingebaut in Windows 7.

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

Antwort3

Wenn Sie mit einer Befehlszeilenlösung einverstanden sind, das cpDienstprogramm, das ich mit einschließeHamilton C-Schalekopiert Ihre Dateien ganz einfach, ohne dass Sie etwas kürzen müssen. (Vollständige Offenlegung: Ich bin der Autor.) Wie der Rest meiner grundlegenden Datei-Dienstprogramme verwendet eslange Unicode-DateinamenIntern werden Pfadlängen von bis zu 32.000 Zeichen, der Systemgrenze, unterstützt.

Wenn dies eine einmalige Sache ist (und möglicherweise auch wenn es nicht so ist), brauchen Sie nur dieFreie Version. Sagen Sie mir Bescheid, wenn Sie auf ein Problem stoßen oder Hilfe brauchen, damit es Ihren Wünschen entspricht.

Antwort4

Um das Problem zu lösen, müssen Sie die fehlerhaften Dateien finden, deren vollständiger Pfad und Dateiname länger als 255 Zeichen sind. Da die Suche nach der Länge in einer Batchdatei ein ziemliches Durcheinander ist, verwende ich das folgende VBScript.

Speichern Sie den untenstehenden Code in einer Datei namens longpaths.vbs. Führen Sie ihn in einer DOS-Eingabeaufforderung mit Folgendem aus, cscript longpaths.vbs <path> <length>wobei <path>der Speicherort des Ordners (vergessen Sie nicht, ihn in Anführungszeichen zu setzen, wenn Sie ein Leerzeichen haben) und <length>die Länge des Pfads ist, ab dem er markiert werden soll.

Der Code lautet wie folgt:

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

Beispiele für Verwendung und Ausgabe:

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>

Wenn Sie die Problemdateien kennen, können Sie sie entweder umbenennen, sodass sie kürzer sind, einen der Ordner in diesem Pfad umbenennen oder (möglicherweise) einem Unterordner in diesem Pfad ein Netzlaufwerk zuordnen, wodurch die Länge des Pfads verkürzt wird.

verwandte Informationen