|
971
|
Programación / Scripting / (Solucionado) [Ruby] Ayuda con rescue!
|
en: 26 Febrero 2012, 18:43 pm
|
Buenas Tengo hecho un code, He leido sobre Rescue, Raise, Y retry, Pero no lo entiendo del todo... El rescue solo se ejecuta una vez en mi code, Y yo necesito que haga rescues sin parar, Suponía que era con "retry" pero creo que no... Lo único que necesito conseguir es que si al mover el archivo da error (El error EACCES) se intente mover una y otra vez, Hasta conseguirlo. Porfavor una ayuda # Proceso def Mover() for archivo in ARGV[1..ARGV.length].each if File.exist?(ARGV[0] + "\\" + archivo.split('\\').last) response = message_box("Origen:\n" + archivo + "\n\n Destino:\n " + ARGV[0] + "\\" + archivo.split('\\').last + "\n\n El archivo de destino ya existe, Reemplazar archivo?", "Reemplazar archivo?", BUTTONS_YESNO) if response == CLICKED_YES FileUtils.move archivo, ARGV[0] elsif response == CLICKED_CANCEL Process.exit end else FileUtils.move archivo, ARGV[0] end end rescue Errno::EACCES puts "El archivo está en uso" FileUtils.move archivo, ARGV[0] retry end Mover() Process.exit
|
|
|
972
|
Programación / Scripting / (Solucionado) [Ruby] Duda sobre FOR con operador de rango
|
en: 23 Febrero 2012, 23:21 pm
|
Hola, estoy intentando hacer un code: require "FileUtils" for archivo in ARGV FileUtils.move archivo, ARGV[0] end Process.exit
El problema es que necesito que el for trabaje los argumentos a partir del argumento nº 1, Hasta llegar al último argumento (Número desconocido que capturo con ARGV.length) Osea, Que no tome en cuenta el argumento nº 0 He intentado hacerlo con el operador de rango, y algunos ejemplos más pero no lo consigo... ARGV[1]..ARGV[(ARGV.length)].each { |archivo| FileUtils.move archivo, ARGV[0] }
ARGV[1].upto ARGV[(ARGV.length)] { |archivo| FileUtils.move archivo, ARGV[0] }
for archivo in ARGV[1], ARGV[(ARGV.length)] FileUtils.move archivo, ARGV[0] end
|
|
|
973
|
Sistemas Operativos / Windows / Parones en mi HDD, Y windows me crea una unidad HDD falsa!
|
en: 22 Febrero 2012, 09:30 am
|
Tengo 2 discos duros SATA asignado a estas letras: C: y E:
Desde hace 2 dias tengo problemas con el disco principal C:, Si lo "calentaba" y le daba caña, Sonaba un "clok" en el disco duro y se quedaba como "muerto", Se paraba durante un minuto y no hacia ruido, no procesaba datos, Y luego al pasar ese minuto o 2, Volvia a la vida y a trabajar... Pues así así cada vez que lo "calentaba" demasiado.
Tengo que decir que el disco C: solo daba parones si tengo los 2 discos conectados. Si desconecto "E:" y le meto caña a "C:" por ejemplo copiando archivos grandes durante una hora no sucede nada extraño.
De momento este problema lo he "solucionado" cambiando el cableado de los discos DE SITIO. El de C: a E: y el de E: a C:.
EDITO:
Pues no se ha solucionado no... Sigue habiendo parones en el disco C:, Ahora se empiezan a notar...
Necesito ayuda ._.
Ah, y desde que empecé a notar el problema, Restauré la configuración por defecto de la BIOS, Pero no ha servido para nada xD.
También cabe decir que he desactivado la caché de escritura en los 2 discos, para evitar que los parones me jodan archivos... y para que el cableado fluya mejor (Aunque no se si afecta a los cables xD)...
También tengo desactivados la mayoría de servicios de Windows, Como los temas, para evitar que el disco trabaje más de lo necesario...
No se que más datos aportar.
Por otro lado y a raíz de ese problema, Ahora cuando inicio sesion en Windows, A los 5 o 10 minutos (Eso es lo más extraño de todo) aparece un nuevo disco duro en "mi pc": "(D:) Disco local", con un icono de disco duro y un interrogante azul.
Obviamente es una unidad innaccesible porque no existe y no debería estar ahí... La unidad no aparece en el administrador de dispositivos y particiones...
- ¿Que puede ser?
He escaneado con NOD y no tengo virus.
También le he pasado un chkdsk y a C: y me ha arreglado archivos ilegibles debido a los parones del primer problema.
- ¿El problema de los parones puede tener algo que ver como para que sea algo tán exagerado de crearme un nuevo disco en Windows?
- ¿Alguna alternativa antes de formatear?...
Gracias.
|
|
|
974
|
Programación / Scripting / [Ruby] Modificar variable de un objeto dentro de una clase
|
en: 22 Febrero 2012, 05:24 am
|
En Ruby, puedes volver a abrir una clase y modificarla. class Anfitrion attr_accessor :nombre end
Se supone que eso da acceso a la variable "nombre" dentro de la clase "Anfitrion", Bien, Lo que no explica es luego como poder modificar la variable, ¿Se hace como con una variable de instancia? Para modificar una variable de instancia es así, verdad?: @nombre = "lo que sea"
? Muxas Gracias..
|
|
|
975
|
Foros Generales / Dudas Generales / (Solucionado) ¿Como verificar si una cuenta de hotmail EXISTE?
|
en: 21 Febrero 2012, 13:06 pm
|
Hola Tengo como 6 o 7 cuentas olvidadas en hotmail, Bueno, Suponiendo que no me las hayan borrado ya... ¿Como puedo verificar si una cuenta existe, Sin recordar la contraseña? Solamente quiero saber si sigue existiendo, Para luego intentar recuperar la contraseña. Más que nada porque intentar averiguarlo por live.com es una mierd@: Ha intentado iniciar sesión demasiadas veces con una dirección de correo electrónico o contraseña incorrectas. Y me bloquea la conexión. Además de los nombres de mis cuentas no me acuerdo muy bien... y no se si terminaban en hot.com o hot.es o live.es, etc... por eso tendría que hacer varios intentos hasta dar con la buena... Y con el límite de live.com es un coñazo y un cansineo tremendo. Salu2
|
|
|
977
|
Programación / Scripting / [Ruby] Me ayudan a corregir este script?
|
en: 20 Febrero 2012, 17:33 pm
|
Hola Este es mi primer script en Ruby, Y lo he hecho con mucha ayuda sino no habría podido Lo único que me preocupa del script es el def "todos", no se si está bien hecho.Y me gustaría simplificar la comprobacion de los argumentos así por ejemplo: if (ARGV[0])==(-h|--help) help() end
Pero no se hacerlo bien xD Si ven algún error o mejora diganmelo, gracias EDITO: Por cierto, Me parece tremendamente inseguro que al usar: File.renameSi existe un archivo con el mismo nombre que el archivo nuevo (renombrado), El archivo se reemplaza por el renombrado, En vez de dar error... O algo parecido xD
# -*- coding: UTF-8 -*- # Renombrador preconfigurado de archivos # # El código original es de RyogiShiki # http://foro.elhacker.net/scripting/solucionado_ruby_renombrando_un_caracter_ilegal-t354066.0.html # Gemas, Módulos... require 'find' exit if Object.const_defined?(:Ocra) system('chcp 1252 >NUL') # Métodos def reset_vars() $total = -1 $renamed = 0 end def resultado() puts " Procesados: #{$total} archivos" puts " Renombrados: #{$renamed} archivos" system('chcp 850 >NUL') Process.exit end def advise() print ' Use "Renamer.exe -a" Para mostrar la ayuda.' + "\n" system('chcp 850 >NUL') Process.exit end def help() system('chcp 850 >NUL') print "\n Modo de empleo:\n\n" print " " + __FILE__.split('/').last + " [Opci\u00F3n] [Ruta]\n\n" print "\n Opciones: \n\n" print " -c --comilla Reemplaza \[\u00B4\] por \[\u0027\]\n\n" print " -e --extension Reemplaza [ .mp3] por [.mp3]\n\n" print " -f --featuring Reemplaza [ ft ],[ ft. ],[ feat ],[ featuring ] por [ feat. ]\n\n" print " -g --guion Reemplaza \[\u2013\] por \[-\]\n\n" print " -i --interrogante Elimina \[\u00BF\]\n\n" print " -t --todo Combina todas las opciones (-c + -e + -f + -g + -i)\n" Process.exit end def reemplazar(caracter_a_reemplazar, nuevo_caracter) $total = -1 Find.find(ARGV[1].gsub("\\", "/")) { |path| path = path.encode('utf-8') if path[caracter_a_reemplazar] then if File.exist?(path.gsub(caracter_a_reemplazar, nuevo_caracter)) print "\n ERROR. El archivo a reemplazar ya existe: " + (path).split('/').last + "\n" else File.rename(path, path.gsub(caracter_a_reemplazar, nuevo_caracter)) $renamed += 1 end end $total += 1 } end # Argumentos if (ARGV.empty?) then help() end if (ARGV[0])=="-a" or ARGV[0] == "/?" help() end if (ARGV[1])==() print "\n ERROR. Debe introducir una ruta...\n\n" advise() elsif if not File.directory? (ARGV[1]) then print "\n ERROR. La ruta no existe...\n\n" advise() end end if ARGV[0] == "-c" or ARGV[0] == "--comilla" reset_vars() reemplazar("\u00B4", "\u0027") resultado() elsif (ARGV[0])=="-e" or ARGV[0] == "--extension" reset_vars() reemplazar(" .mp3", ".mp3") reemplazar(" .MP3", ".mp3") reemplazar(" .Mp3", ".mp3") resultado() elsif (ARGV[0])=="-f" or ARGV[0] == "--featuring" reset_vars() reemplazar(" ft. ", " feat. ") reemplazar(" Ft. ", " feat. ") reemplazar(" FT. ", " feat. ") reemplazar(" ft ", " feat. ") reemplazar(" Ft ", " feat. ") reemplazar(" FT ", " feat. ") reemplazar(" feat ", " feat. ") reemplazar(" Feat ", " feat. ") reemplazar(" FEAT ", " feat. ") reemplazar(" featuring ", " feat. ") reemplazar(" Featuring ", " feat. ") reemplazar(" FEATURING ", " feat. ") resultado() elsif (ARGV[0])=="-g" or ARGV[0] == "--guion" reset_vars() reemplazar("\u2013", "-") resultado() elsif (ARGV[0])=="-i" or ARGV[0] == "--interrogante" reset_vars() reemplazar("\u00BF", "") resultado() elsif (ARGV[0])=="-t" or ARGV[0] == "--todo" reset_vars() reemplazar("\u00B4", "\u0027") reemplazar("\u2013", "-") reemplazar("\u00BF", "") reemplazar(" ft. ", " feat. ") reemplazar(" Ft. ", " feat. ") reemplazar(" FT. ", " feat. ") reemplazar(" ft ", " feat. ") reemplazar(" Ft ", " feat. ") reemplazar(" FT ", " feat. ") reemplazar(" feat ", " feat. ") reemplazar(" Feat ", " feat. ") reemplazar(" FEAT ", " feat. ") reemplazar(" featuring ", " feat. ") reemplazar(" Featuring ", " feat. ") reemplazar(" FEATURING ", " feat. ") reemplazar(" .mp3", ".mp3") reemplazar(" .MP3", ".mp3") reemplazar(" .Mp3", ".mp3") resultado() end
|
|
|
978
|
Programación / Scripting / (solucionado) [Ruby] Error "undefined method"
|
en: 20 Febrero 2012, 13:00 pm
|
Hola de nuevo Me surge un problema en la parte: elsif(ARGV[0])=="-f" featuring()
`block in featuring': undefined method `+' for nil:NilClass (NoMethodError) Me dice que no he definido el método, ¿Porque es tán cruel conmigo?  # -*- coding: UTF-8 -*- # Métodos def reset() renamed = 0 total = -1 end def resultado() puts "Procesados: #{total} archivos" puts "Renombrados: #{renamed} archivos" end def featuring() Find.find(ARGV[1].gsub("\\", "/")) { |path| path = path.encode('utf-8') if path[" ft. "] then File.rename(path, path.gsub(" ft. ", " feat. ")) rename += 1 end total += 1 } end # Argumentos if (ARGV[0])==() help() elsif(ARGV[0])=="/?" help() elsif(ARGV[1])==() print "\n ERROR".red.bold + " | Debe introducir una ruta...\n\n" help() elsif(ARGV[0])=="-f" reset() featuring() resultado() end
|
|
|
979
|
Programación / Scripting / (Solucionado) [Ruby] Colorizando texto
|
en: 20 Febrero 2012, 09:40 am
|
Hola He probado las siguientes gemas en Windows 7 y ninguna me ha funcionado para el propósito: Paint Colored gem win32consoleNo me dan error, pero no se muestra en color, y sigo los ejemplos al pie de la letra... ¿Tienen idea de como puedo hacer algo parecido a esto bajo windows 7?  PD: Es posible que no me funcione porque estoy probando en un script rubi con codificación UTF-8? Tengo entendido que para ver los colores hay que codificar en ANSI pero no estoy seguro de eso ¿Alguna alternativa entonces? EDITO: Nada, He probado el "test.rb" oficial de la gema paint por ejemplo, y no se muestra en colores...
|
|
|
980
|
Programación / Scripting / (Solucionado) [RUBY] Mostrar caracter unicode
|
en: 20 Febrero 2012, 07:21 am
|
Estoy intentando hacer una pantalla de ayuda en un script El problema es que me da errores al intentar mostrar estos caracteres: ¿ ´ ' –# -*- coding: UTF-8 -*-
def help() print "\n Opciones: \n\n" print ' -? (Elimina el caracter "¿")' + "\n" print ' -comilla (Reemplaza "´" por "'")' + "\n" print ' -ft (Reemplaza " ft " por " feat. ")' + "\n" print ' -ft. (Reemplaza " ft. " por " feat. ")' + "\n" print ' -guion (Reemplaza "–" por "-")' + "\n" Process.exit end
help() He intentado mostrar el guión así, pero nada... : print ' -guion (Reemplaza "\u2013" por "-")' + "\n"
Y una pregunta de paso... Como puedo hacer esto correctamente? help() end
La intención es que reconozca si el argumento está vació. EDITO: Vale lo segundo ya lo he conseguido: if (ARGV[0])==() help() end
|
|
|
|
|
|
|