![El nombre del archivo es demasiado largo para copiarlo pero no dice cuál](https://rvso.com/image/1346595/El%20nombre%20del%20archivo%20es%20demasiado%20largo%20para%20copiarlo%20pero%20no%20dice%20cu%C3%A1l.png)
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 cp
utilidad 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.