Solucionar y evitar el error de "Ruta demasiado larga" en Windows

Iniciado por rconde79, 1 Marzo 2011, 11:57 AM

0 Miembros y 1 Visitante están viendo este tema.

RyogiShiki

Cita de: pitoloko en  2 Marzo 2011, 16:56 PM
no se si será posible, pero si gankutsuo le añade algún parametro, mira, algo asi quedaría, no?

@echo off
dir.exe c:\ > lista.txt & type.txt & del /q lista.txt
pause >nul
exit


animo!
Bueno, como verás yo soy más de GNU/Linux y me parecio interesante hacer un Script de estos, entiendo un poco el comando pero la verdad no lo entiendo del todo veo que guarda la salida del programa en lista.txt y type.txt pero no veo para que es el resto.

Saludos


SuperDraco

es como kedaría tu programa mas o menos si se ejecuta desde un .bat xD

lo guarda en lista.txt, luego se muestra la lista.txt, y luego se borra con "del"

pause es para pausar el batch, porque sino se cerraría.
No he vuelto, solo estoy de paso.

RyogiShiki

#22
Bueno el script que guarda las rutas en un archivo de texto sin preguntar nada es este.
Código (ruby) [Seleccionar]
require 'find'

def dirComp(dir)
fileName = "C:" + "\\list.txt"
File.open fileName, 'w'
counter = 0
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"
File.open fileName, 'a+' do |file|
file.write "#{path.gsub("/", "\\")}\n"
counter = counter + 1
end
else puts "#{path} ... |OK|"
end
end
if(counter == 0) then
print "No se encontraron rutas incorrectas! ;) \n"
else print "Se encontraron #{counter} rutas incorrectas, y fueron guardadas en #{fileName.gsub("/", "\\")} =(\n"
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)


En estos momentos me encuentro en Debian..... así que ya voy para Windows a crear el ejecutable, permanece pendiente que cuandotenga el exe edito este msg y lo pongo.

Saludos

-----
EDIT
-----

Listo, ya está hecho!... aquí dejo el nuevo exe: http://www.mediafire.com/?lhae2w358jx6zw9 (es el mismo que el que esta más abajito =))

Saludos


rconde79

Gracias amigo.

Déjame decirte que da gusto encontrar gente como tú, ayuda totalmente desinteresada.

Lo veo poco probable porque como verás tengo nivel básico, pero si necesitas cualquier cosa sólo dilo.

Gracias y un saludo!

rconde79

Hola de nuevo.

He probado el programa en mi C: un par de veces, y me da el resultado de que ha encontrado 18 rutas incorrectas y las ha guardado en list.txt. Sin embargo, en el archivo de texto sólo se encuentra una.

¿Puede ser que tenga algún pequeño fallo el programa o soy yo que lo estoy utilizando mal?

RyogiShiki

Ahhh jajaja no es ningun falló es el parametro "w" que reescribe el archivo cada vez que encuentra una ruta!! jajaja no me habia fijado en eso. Gracias por reportarlo.

Corrigiendo...


Novlucker

Bueno, la solución de gankutsuo es mucho más completa, pero dejo este otro por si a alguien le sirve de algo, a mi me llevó 3 minutos modificar un script anterior :xD

Código (vb) [Seleccionar]
Set objfso = createobject("scripting.filesystemobject")
Set IDir = objfso.getfolder(wscript.arguments(0))
ListDirs(IDir)

Function ListDirs(IFol)
if len(IFol.path)>256 then wscript.echo IFol.path
Set SubsIFol = IFol.subfolders

On error resume next
For each SF in SubsIFol
ListDirs(SF)
Next
End Function


Es un vbscript, así que se copia en un notepad y se guarda con extensión vbs

Luego se ejecuta desde línea de comandos pasando como parámetro la ruta de la carpeta.
Código (dos) [Seleccionar]
C:\>cscript /nologo elscript.vbs C:
Y si quieres exportarlo a un archivo lo haces simplemente redireccionando
Código (dos) [Seleccionar]
C:\>cscript /nologo elscript.vbs C: > log.txt

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

RyogiShiki

Cita de: Novlucker en  2 Marzo 2011, 17:58 PM
Bueno, la solución de gankutsuo es mucho más completa, pero dejo este otro por si a alguien le sirve de algo, a mi me llevó 3 minutos modificar un script anterior :xD

Código (vb) [Seleccionar]
Set objfso = createobject("scripting.filesystemobject")
Set IDir = objfso.getfolder(wscript.arguments(0))
ListDirs(IDir)

Function ListDirs(IFol)
if len(IFol.path)>256 then wscript.echo IFol.path
Set SubsIFol = IFol.subfolders

On error resume next
For each SF in SubsIFol
ListDirs(SF)
Next
End Function


Es un vbscript, así que se copia en un notepad y se guarda con extensión vbs

Luego se ejecuta desde línea de comandos pasando como parámetro la ruta de la carpeta.
Código (dos) [Seleccionar]
C:\>cscript /nologo elscript.vbs C:
Y si quieres exportarlo a un archivo lo haces simplemente redireccionando
Código (dos) [Seleccionar]
C:\>cscript /nologo elscript.vbs C: > log.txt

Saludos
Jeje graciaspor el aporte, también es una gran solución! y me alegra que la hayas puesto! despues de todo en la variedad está lo bueno eh!


SuperDraco

Cita de: Novlucker en  2 Marzo 2011, 17:58 PM
Bueno, la solución de gankutsuo es mucho más completa, pero dejo este otro por si a alguien le sirve de algo, a mi me llevó 3 minutos modificar un script anterior :xD

Código (vb) [Seleccionar]
Set objfso = createobject("scripting.filesystemobject")
Set IDir = objfso.getfolder(wscript.arguments(0))
ListDirs(IDir)

Function ListDirs(IFol)
if len(IFol.path)>256 then wscript.echo IFol.path
Set SubsIFol = IFol.subfolders

On error resume next
For each SF in SubsIFol
ListDirs(SF)
Next
End Function


Es un vbscript, así que se copia en un notepad y se guarda con extensión vbs

Luego se ejecuta desde línea de comandos pasando como parámetro la ruta de la carpeta.
Código (dos) [Seleccionar]
C:\>cscript /nologo elscript.vbs C:
Y si quieres exportarlo a un archivo lo haces simplemente redireccionando
Código (dos) [Seleccionar]
C:\>cscript /nologo elscript.vbs C: > log.txt

Saludos

Puto Novlucker!!!   y con perdón he!! pero siempre me sorprendes con tus vbs, casate conmigo xDD sabes que amo tus conocimientos no? ajjaja

Gracias a los 2!

(esperando la correción yo tambien ^^)
No he vuelto, solo estoy de paso.

RyogiShiki

#29
Listo ya está corregido: http://www.mediafire.com/?lhae2w358jx6zw9