(Solucionado) [RUBY] Renombrando un caracter ilegal

Iniciado por Eleкtro, 19 Febrero 2012, 06:52 AM

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

RyogiShiki

Cita de: EleKtro H@cker en 20 Febrero 2012, 03:47 AM
Tienes razón me estaba dando cuenta de eso ahora iba a editar el script

Y esto debe quedar así:
Código (ruby) [Seleccionar]
total = -1

Salu2

Eso si quieres empezar el conteo desde 0

Saludos.


Eleкtro

Mierd@, Ahora resulta que no me funciona   :-\

Ruta: E:\Música\Canciones\2009\Electro

Supongo que es por el caracter "ú" de la ruta...

¿Se puede arreglar?

1er intento:
renamer-.rb "E:\Música\Canciones\2009\Electro"

C:/Users/Administrador/AppData/Local/Temp/ocrBAA2.tmp/lib/ruby/1.9.1/find.rb:38:in `block in find': No such file or directory (Errno::ENOENT)
        from C:/Users/Administrador/AppData/Local/Temp/ocrBAA2.tmp/lib/ruby/1.9.1/find.rb:38:in `collect!'
        from C:/Users/Administrador/AppData/Local/Temp/ocrBAA2.tmp/lib/ruby/1.9.1/find.rb:38:in `find'
        from C:/Users/Administrador/AppData/Local/Temp/ocrBAA2.tmp/src/1.rb:9:in `<main>'



2ndo intento:
renamer-.rb "E:\M£sica\Canciones\2009\Electro"

C:/Users/Administrador/AppData/Local/Temp/ocr19A3.tmp/lib/ruby/1.9.1/find.rb:56:in `join': incompatible character encodings: UTF-8 and Windows-1252 (Encoding::CompatibilityError)
        from C:/Users/Administrador/AppData/Local/Temp/ocr19A3.tmp/lib/ruby/1.9.1/find.rb:56:in `block (2 levels) in find'
        from C:/Users/Administrador/AppData/Local/Temp/ocr19A3.tmp/lib/ruby/1.9.1/find.rb:54:in `reverse_each'
        from C:/Users/Administrador/AppData/Local/Temp/ocr19A3.tmp/lib/ruby/1.9.1/find.rb:54:in `block in find'
        from C:/Users/Administrador/AppData/Local/Temp/ocr19A3.tmp/lib/ruby/1.9.1/find.rb:40:in `catch'
        from C:/Users/Administrador/AppData/Local/Temp/ocr19A3.tmp/lib/ruby/1.9.1/find.rb:40:in `find'
        from C:/Users/Administrador/AppData/Local/Temp/ocr19A3.tmp/src/1.rb:9:in `<main>'


Siento alargar tanto el tema








RyogiShiki

Al parecer es culpa del cmd de Windows, que no está pasando los argumentos encodeados en utf-8 la solución usar este comando antes de correr el Script:

chcp 1252>NUL

y usar este Script:

Código (ruby) [Seleccionar]
# -*- coding: UTF-8 -*-

require 'find'
exit if Object.const_defined?(:Ocra)

rename = 0
total = 0

Find.find(ARGV[0].gsub("\\", "/")) { |path|
path = path.encode('utf-8')
if path["\u2013"] then
File.rename(path, path.gsub("\u2013", "-"))
rename += 1
end
total += 1
}

puts "Procesados: #{total} archivos" + " | " + "Renombrados: #{rename} archivos"


Saludos


Eleкtro









Eleкtro

Cita de: RyogiShiki en 20 Febrero 2012, 01:27 AM
si quieres saber eso en ruby es con:
Código (ruby) [Seleccionar]
__FILE__

Y esto solo para mostrar el "filename"
Código (ruby) [Seleccionar]
puts __FILE__.split('/').last

salu2








WaAYa HaCK

En python, importando el módulo sys , está el sys.argv(0). Y para lo del archivo, os.path.basename("ruta/de/cualquier/cosa.fap") devuelve el archivo y su extensión. Si sólo quieres un nombre, mediante RegEx se puede.

Por cierto, EleKtro H@cker, si te interesa seguir aprendiendo Python, tengo un script para pasar archivos por internet, hecho por mí durante dos días de clase  ;) Si quieres, posteo el code y lo explico.
La cacatúa yoyó es nueva en el zoo!

Eleкtro

Cita de: WaAYa HaCK en 20 Febrero 2012, 20:09 PM
Por cierto, EleKtro H@cker, si te interesa seguir aprendiendo Python, tengo un script para pasar archivos por internet, hecho por mí durante dos días de clase  ;) Si quieres, posteo el code y lo explico.

Claro que me interesa, Se que hago muy mal usando ruby y python a la vez sin haber aprendido uno de los 2, Pero igual de los 2 se tiene mucho que aprender, Ruby me está gustando mucho.

Espero tu script

Salu2 !