elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 09:49  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Sistemas Operativos
| |-+  Windows (Moderador: Randomize)
| | |-+  Solucionar y evitar el error de "Ruta demasiado larga" en Windows
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Solucionar y evitar el error de "Ruta demasiado larga" en Windows  (Leído 14,145 veces)
rconde79

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« en: 1 Marzo 2011, 11:57 »

Buenas a todos.

Como ya sabréis, si en Windows se quiere copiar un archivo de una carpeta a otra y éste tiene una ruta que supera los 256 caracteres, salta el error de "Imposible copiar, ruta demasiado larga".

Este error se torna en caos en una oficina con red común y varios proyectos con muchas subcarpetas.

Lo peor, es que al saltar el error, deja de copiar. Esto supone que si por ejemplo, hay 20 archivos con ruta demasiado larga, tienes que copiar y pegar veinte veces para enterarte de cuáles son, para modificarlos.

Después de esta larga introducción voy al objetivo del post. Me pregunto si serían posible dos cosas:

1. Solución: alguna forma de ver TODOS los archivos con ruta demasiado larga de una carpeta (comprimirla  no funciona).

2. Evitarlo: alguna forma de que se avise al usuario que está creando un archivo cuya ruta es demasiado larga, y que en el futuro dará problemas.

Un saludo mákinas.


En línea
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #1 en: 1 Marzo 2011, 13:31 »

Mediante la consola, quizás usando los nombres cortos, por ejemplo así:

Código:
copy file.txt c:\archiv~1\

para saber el nombre corto de un directorio:

Código:
dir /X

No se si solucionará el problema.

saludos


En línea

pa que
rconde79

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #2 en: 1 Marzo 2011, 16:47 »

La verdad es que no se bien a qué te refieres. Tengo nivel básico de informática.

De todas maneras me pinta a que te refieres a una solución para un archivo. Yo me refiero a una solución general, a aplicar a carpetas llenas de subcarpetas.

Un saludo
En línea
suso11

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #3 en: 1 Marzo 2011, 17:35 »

A lo que el se refiere es que en windows se pueden usar los nombres cortos, tal y como se hacía en dos, es decir nombres de 8 caracteres como maximo.

La traducción de un nombre corto se realiza con 6 caracteres y ~1 detras.

Por ejemplo documents and setings se traduciria como DOCUME~1.

Es lo unico que se me ocurre a mi también ya que esta es una limitación de windows y no se si se puede subsanar de alguna manera.

un saludo!

En línea
RyogiShiki


Desconectado Desconectado

Mensajes: 709


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #4 en: 1 Marzo 2011, 17:50 »

Hola, pues realmente me has dado una idea!

Acabo de hacer un Script en ruby que simplemente escribiendo el path del directorio que quieres verificar el buscará (recursivamente en todos sus archivos y subdirectorios) de ahí en adelante y te dira que rutas superan los 255 caracteres, es muy facil de usar, pero así mismo muy primitivo, así que no le pases parametros que no sirban porque no he considerado todas las excepciones.

Ahora implemento la función de renombrar el archivo cada qe encuentre un path tan largo

Requisitos: Tener Ruby claro está.

a continuación te lo dejo: http://www.mediafire.com/?xl59d3cg1nh8n1t

Path válidos:
Citar
C:\
c:\Users\SomeUser\Projects
F:\lo\que\sea
En general cualquier path absoluto sirve, si el directorio o archivo no existe simplemente lanza un error y se sale del programa.

Saludos
« Última modificación: 1 Marzo 2011, 18:47 por gankutsuo » En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 709


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #5 en: 1 Marzo 2011, 22:23 »

Bien alfin lo he terminado! la última versión del script que comprueba si el tamaño de un path es mayor a 256 caracteres, y si es así entonces te pregunta si quieres cambiar el nombre del archivo ahora solo falta implementar unas cuantas opciones para permitir el pase de parametros por la consola. Espero este Script sea de utilidad para alguien.

Source:
Código
require 'find'
 
def dirComp(dir)
Dir.chdir(dir)
puts dir
Find.find(dir) do |path|
if(path.to_s.length > 256)
print "#{path} ... ||ERROR: Path mayor a 255 caracteres||\n"
print "Desea renombrar el archivo (s/n): "
op = gets.chomp.to_s
if (op == 's')
print "Escriba el nuevo nombre para el archivo: "
name = gets.chomp.to_s
oldName = cutPath(path)
File.rename(path, oldName + name)
else next
end
else puts "#{path} ... |OK|"
end
end
end
 
def cutPath(path)
index = -1
tmpVar = 0
while (tmpVar != 1) do
if (path[index].chr == "/" or path[index].chr == "\\" ) then
finalIndex = path.length - index.abs
oldName = path[0, (finalIndex + 1)]
tmpVar = 1
else
index = index - 1
end
end
return oldName
end
 
print "Escriba el path de un directorio: "
path = gets.chomp.to_s
dirComp(path)

Aquí el archivo: http://www.mediafire.com/?az6ouc6395cr12j
Mañana paso el Script en un exe para que funcione sin tener instalado Ruby


« Última modificación: 2 Marzo 2011, 02:10 por gankutsuo » En línea

suso11

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #6 en: 1 Marzo 2011, 22:42 »

 :xD gankutsuo espectacular! Jajajaja  ;-)
En línea
Randomize
Moderador
***
Desconectado Desconectado

Mensajes: 15.900


randomize@hotmail.es


Ver Perfil
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #7 en: 1 Marzo 2011, 22:48 »

Chapó gankutsuo, me quito el sombrero  ;)
En línea
RyogiShiki


Desconectado Desconectado

Mensajes: 709


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #8 en: 1 Marzo 2011, 22:48 »

:xD gankutsuo espectacular! Jajajaja  ;-)

Chapó gankutsuo, me quito el sombrero  ;)

grx! Justo lo acabo de pasar en mi máquina y encontré unos cuantos paths de ese tamaño que ya están bien!

Saludos
En línea

pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #9 en: 2 Marzo 2011, 02:10 »

Pues si, gracias por subirlo para todos!

saludos
En línea

pa que
rconde79

Desconectado Desconectado

Mensajes: 49


Ver Perfil
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #10 en: 2 Marzo 2011, 07:57 »

Oye que el que ha abierto el tema tiene tambien un poco de mérito no? jejeje

No, ahora en serio, muchas gracias. A mi por lo menos me será de grandísima utilidad, y más si como dices, lo pasas en un exe para utilizar en windows, ya que yo no tengo el Ruby. Admito que ni lo conozco.

Sólo una pincelada. Creí leer ayer que sólo se podía pasar a las unidades C: y F: Si pudieras modificarlo para pasarlo a cualquier carpeta ubicada en cualquier unidad ya sería la perfección (no sé si será mucho pedir).

Gracias de nuevo!
En línea
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #11 en: 2 Marzo 2011, 09:05 »

Oye y el programa trabaja solo en un directorio, o tambien en las sub carpetas? xD por ejemplo para mirar en TODO el discoduro, se puede?

(es una nueva idea que añado a la sugerencia de modificaciones de rconde XD)
En línea

pa que
RyogiShiki


Desconectado Desconectado

Mensajes: 709


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #12 en: 2 Marzo 2011, 14:32 »

El programa trabaja como mencioné recursivamente, lo que quiere decir que trabaja en subcarpetas también. El programa funciona para cualquier carpeta si le das la ruta de esa carpeta.

Lo único esque en las últimas pruebas que he hecho he tenido algunos problemas gracias al maldito Windows que no sabe como arreglarselas en algunas situaciones con esos paths, y menos cuando se hace recursivo el cambio.... voy a arreglar esos problemas cuanto antes.

Lo ideal en estos momentos para que no sufras ningún percance es... uhmm... imagino que usar un Live CD de alguna distro muy pequeña, montar el disco y analiza.

Voy a resolver los problemas que mencioné antes y lo paso.


Saludos
« Última modificación: 2 Marzo 2011, 14:36 por gankutsuo » En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 709


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #13 en: 2 Marzo 2011, 15:14 »

Listo, Ya está hecho, ahora permíteme explicar el funcionamiento del Script:

Lo primero es el exe: http://www.mediafire.com/?957q8lr354arne0

Cuando lo tengas lo más conveniente es que lo dejes en la Raiz del Disco local C: (o el que sea que uses por defecto). Despues abres una consola CMD y escribes lo siguiente:
Código
C:
y luego
Código
dir.exe
Cuando lo hagas lo primero que verás es un mensaje como el siguiente:
Código
Escriba el path de un directorio: 
En donde puedes escribir el path de cualquier directorio.... cualquiera no importa cual sea o en que dico se encuenre la comprobación será recursiva lo que quiere decir que comprobará todos los niveles del path suministrado incluyendo todos los archivos y subdirectorios que se encuentren.. Si en algún momento se encuentra un ruta mayor a 256 caracteres te saldrá el siguiente mensaje:
Código
||ERROR: Path mayor a 255 caracteres||
Desea renombrar el archivo (s/n):
en donde solo puedes introducir 's' o 'n' si introduces 'n' o cualquier otro caracter el programa continuara la comprobación sin cambiar nada, si de lo contrario colocas 's' aparecerá el siguiente mensaje:
Código
Escriba el nuevo nombre para el archivo: 
En donde tienes que escribir el nuevo nombre para el archivo. NOTA: El programa NO hace doble comprobación, así que asegurate que el nuevo nombre sea más corto. Si el nombre continua siendo más grande a 256 caracteres Windows no dejará cambiar el nombre (maldito Windows!!), Windows le pasara un error al programa y el programa terminara la ejecución.
Despues de que escribas el nombre y des 'Enter' el programa continuará con la ejecución.
Por cada path bien formado que se encuentre el programa te lo dirá con un:
Código
... | OK |

Y bueno creo que eso es todo lo que hay que decir si a alguien le interesa el Script con los pequeños cambios realizados aquí está:
Código
require 'find'
 
def dirComp(dir)
Dir.chdir(dir)
puts dir
Find.find(dir) do |path|
if(path.to_s.length > 256)
print "#{path} ... ||ERROR: Path mayor a 255 caracteres||\n"
print "Desea renombrar el archivo (s/n): "
op = gets.chomp.to_s
if (op == 's')
print "Escribe el nuevo nombre para el archivo: "
name = gets.chomp.to_s
oldName = cutPath(path)
newName = oldName + name
File.rename(path.gsub("/", "\\"), newName.gsub("/", "\\"))
else next
end
else puts "#{path} ... |OK|"
end
end
end
 
def cutPath(path)
index = -1
tmpVar = 0
while (tmpVar != 1) do
if (path[index].chr == "/" or path[index].chr == "\\" ) then
finalIndex = path.length - index.abs
oldName = path[0, (finalIndex + 1)]
tmpVar = 1
else
index = index - 1
end
end
return oldName
end
 
print "Escriba el path de un directorio: "
path = gets.chomp.to_s
dirComp(path)

Ahora hay que tener en cuenta que este último ya no funciona sobre plataformas *nix gracias a Windows -.- pero siempre se puede usar el anterior (aunque como dije no tiene mucho sentido.)
Espero sea de Utilidad

POR ULTIMO: Si encuentran algún error (diferente a lo que mencione más arriba claro está) haganmelo saber para corregirlo.

Saludos.
« Última modificación: 2 Marzo 2011, 15:28 por gankutsuo » En línea

pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: Solucionar y evitar el error de "Ruta demasiado larga" en Windows
« Respuesta #14 en: 2 Marzo 2011, 15:23 »

Que gran utilidad! que grande eres xD deberias subirlo por ahí, a algunas paginas de renombre para que lo tengan más usuarios, o vender el programa xD.
En línea

pa que
Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines