elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  (Solucionado) [Ruby] Duda sobre FOR con operador de rango
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: (Solucionado) [Ruby] Duda sobre FOR con operador de rango  (Leído 3,502 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.874



Ver Perfil
(Solucionado) [Ruby] Duda sobre FOR con operador de rango
« en: 23 Febrero 2012, 23:21 pm »

Hola, estoy intentando hacer un code:

Código
  1. require "FileUtils"
  2.  
  3. for archivo in ARGV
  4.     FileUtils.move archivo, ARGV[0]
  5. end
  6.  
  7. 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...

Código
  1. ARGV[1]..ARGV[(ARGV.length)].each { |archivo| FileUtils.move archivo, ARGV[0] }

Código
  1. ARGV[1].upto ARGV[(ARGV.length)] { |archivo| FileUtils.move archivo, ARGV[0] }

Código
  1. for archivo in ARGV[1], ARGV[(ARGV.length)]
  2.    FileUtils.move archivo, ARGV[0]
  3. end


« Última modificación: 24 Febrero 2012, 00:56 am por EleKtro H@cker » En línea



RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: [Ruby] Duda sobre FOR con operador de rango
« Respuesta #1 en: 24 Febrero 2012, 00:02 am »

Hola!

Bueno la manera en que yo lo haría es la siguiente, usando el operador de rango dentro del indice del array:

Código
  1. ARGV[1..ARGV.length].each { |file|
  2.    puts file
  3. }

Saludos


« Última modificación: 24 Febrero 2012, 00:12 am por RyogiShiki » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.874



Ver Perfil
Re: [Ruby] Duda sobre FOR con operador de rango
« Respuesta #2 en: 24 Febrero 2012, 00:55 am »

usando el operador de rango dentro del indice del array:

Me salvaste de nuevo gracias ^^
En línea



Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.874



Ver Perfil
Re: (Solucionado) [Ruby] Duda sobre FOR con operador de rango
« Respuesta #3 en: 24 Febrero 2012, 13:42 pm »

De verdad que muxisimas gracias Ryo

Al final he conseguido hacer esto, Aunque el def message_box es un "copy & paste" el resto lo he ido haciendo yo, Por eso lo posteo por si he tenido algún fallo al hacerlo o si sale alguna mejora.

En principio si el script se usa desde el menú sendto, debería guardarse como un ".rbw" pero entonces ya no saldría el menú de ayuda o los posibles mensajes de errores... No se como puedo hacer para que "reaparezca" la consola solamente para mostrar la ayuda.

un saludo.



Código
  1. # -*- coding: UTF-8 -*-
  2.  
  3. # By EleKtro H@cker (24/02/2012)
  4. #
  5. # Mueve archivos desde un punto de origen hasta un punto de destino
  6. # Pensado para usarlo como replazamiento del "SendTo" de Windows.
  7. #
  8. # (Requiere el uso de argumentos)
  9.  
  10.  
  11. # Módulos
  12.  
  13. require "FileUtils"
  14. require 'dl'
  15.  
  16. exit if Object.const_defined?(:Ocra)
  17.  
  18.  
  19. # Variables vonstantes
  20.  
  21. BUTTONS_OKCANCEL = 1
  22. BUTTONS_YESNO = 4
  23. CLICKED_CANCEL = 2
  24. CLICKED_YES = 6
  25. CLICKED_NO = 7
  26.  
  27.  
  28. # Métodos
  29.  
  30. def help()
  31. print "\nSe requiere al menos 1 archivo de origen.\n\n\n"
  32. print "Modo de empleo: \n\n"
  33. print ' Mover.rb [Destino] [Archivo de origen 1] [Archivo de origen 2] [etc...]' + "\n\n\n"
  34. print 'Ejemplo: (Mover tres archivos al directorio de destino "C:"' + "\n\n"
  35. print ' Mover.rb "C:\" "D:\Archivo1.txt" "E:\Archivo2.jpg" "F:\Archivo3.mp3"' + "\n\n"
  36. Process.exit
  37. end
  38.  
  39. def message_box(txt, title='', buttons='')
  40.    user32 = DL.dlopen('user32')
  41. msgbox = DL::CFunc.new(user32['MessageBoxA'], DL::TYPE_LONG, 'MessageBox')
  42. r, rs = msgbox.call([0, txt, title, 3].pack('L!ppL!').unpack('L!*'))
  43.    return r
  44. end
  45.  
  46.  
  47. # Control de errores
  48.  
  49. if ARGV.empty? == true
  50. help()
  51. elsif ARGV.length < 2
  52. help()
  53. elsif File.directory?(ARGV[0]) == false
  54. print "\n El directorio de destino no existe: " + (ARGV[0]) + "\n"
  55. Process.exit
  56. end
  57.  
  58. for archivo in ARGV[1..ARGV.length].each
  59. if File.exist?(archivo) == false
  60. print "\n El archivo a mover no existe: " + archivo + "\n"
  61. end
  62.  
  63. end
  64.  
  65.  
  66.  
  67. # Proceso
  68.  
  69. for archivo in ARGV[1..ARGV.length].each
  70.  
  71. if File.exist?(ARGV[0] + "\\" + archivo.split('\\').last)
  72. 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)
  73. if response == CLICKED_YES
  74.   FileUtils.move archivo, ARGV[0]
  75.   elsif response == CLICKED_CANCEL
  76.   Process.exit
  77. end
  78. else
  79. FileUtils.move archivo, ARGV[0]
  80. end
  81.  
  82. end
  83.  
  84.  
  85. # Fin
  86.  
  87. Process.exit
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Introducing Ruby] Lo que debes saber sobre Ruby
Scripting
RyogiShiki 0 9,857 Último mensaje 4 Marzo 2011, 20:45 pm
por RyogiShiki
duda sobre operador new
Programación C/C++
<[(x)]> 1 2,237 Último mensaje 19 Mayo 2011, 10:22 am
por willyhunting
(Solucionado) [RUBY] Mostrar caracter unicode
Scripting
Eleкtro 4 3,766 Último mensaje 20 Febrero 2012, 16:18 pm
por RyogiShiki
(Solucionado) [Ruby] Colorizando texto
Scripting
Eleкtro 1 3,124 Último mensaje 20 Febrero 2012, 10:15 am
por Eleкtro
[Solucionado] Duda en operador ternario ?:
Programación C/C++
Mario Olivera 6 3,905 Último mensaje 21 Julio 2014, 17:17 pm
por Mario Olivera
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines