El nombre del archivo es demasiado largo para copiarlo pero no dice cuál

El nombre del archivo es demasiado largo para copiarlo pero no dice cuál

Estaba copiando un montón de archivos pero no pude copiar algunos porque el nombre era demasiado largo. ¿Existe una manera fácil de acortar los nombres o al menos puedo saber la ruta donde el nombre del archivo se vuelve demasiado largo?

EDITAR: por montón de archivos quiero decir que hay dos directorios, cada uno de los cuales contiene archivos y más directorios que contienen más archivos, etc. Simplemente estoy copiando con Ctrl+c.

Respuesta1

Puedes usarEscáner de rutapara encontrar los archivos ofensivos. (Desplácese hacia abajo hasta Old Path Scanner)

Respuesta2

Yo sugeriríarobocopia, incorporado Windows 7.

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

Respuesta3

Si está de acuerdo con una solución de línea de comandos, la cputilidad que incluyo conCarcasa Hamilton CCopiará fácilmente sus archivos sin necesidad de acortar nada. (Divulgación completa: soy el autor). Al igual que el resto de mis utilidades de archivos básicas, utilizanombres de archivos Unicode largosinternamente para admitir longitudes de ruta de hasta 32 KB, el límite del sistema.

Si esto es algo que ocurre una sola vez (y posiblemente incluso si no lo es), todo lo que necesita es elversión gratuita. Avíseme si encuentra algún problema o necesita ayuda para que haga lo que desea.

Respuesta4

Para resolver el problema, necesita encontrar los archivos problemáticos donde la ruta completa y el nombre del archivo tengan más de 255 caracteres. Dado que encontrar la longitud en un archivo por lotes es un poco complicado, utilizo el siguiente VBScript.

Guarde el código siguiente en un archivo llamado longpaths.vbs. Ejecútelo desde un símbolo del sistema de DOS con lo siguiente: cscript longpaths.vbs <path> <length>dónde <path>está la ubicación de la carpeta (no olvide incluirla entre comillas si tiene un espacio) y <length>la longitud de la ruta sobre la cual debe marcar.

El código es el siguiente:

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

Uso y salida de muestra:

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>

Una vez que conozca los archivos problemáticos, puede cambiarles el nombre para que sean más cortos, cambiar el nombre de una de las carpetas en esa ruta o (posiblemente) asignar una unidad de red a una subcarpeta en esa ruta, lo que reducirá la longitud de la ruta.

información relacionada