Listo, Ya está hecho, ahora permíteme explicar el funcionamiento del Script:
Lo primero es el exe:
http://www.mediafire.com/?957q8lr354arne0Cuando 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:
y luego
Cuando lo hagas lo primero que verás es un mensaje como el siguiente:
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:
||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:
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:
... | 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á:
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.