Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: SuperDraco en 8 Julio 2011, 10:21 am



Título: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito? [Solucionado]
Publicado por: SuperDraco en 8 Julio 2011, 10:21 am
Hola, ¿se os ocurre alguna forma de como saber el número de archivos que se arrastran hacia un .bat?

Por ejemplo, si arrastro un archivo a un .bat, este será el argumento "%1"

Pero y si arrastro 20 archivos por ejemplo? como puedo hacerle saber a mi bat que son 20 los argumentos que necesita manejar?

Para cada archivo que arrastre, necesito crear una variable con el nombre del archivo, por ese motivo necesito saber cuantos archivos se han arrastrado, puede que no me esté explicando bien, así que aqui dejo un ejemplo que llevo hecho:

Código
  1. Set Archivo1="%1"
  2. Set Archivo2="%2"
  3. Set Archivo3="%3"
  4. Set Archivo4="%4"
  5. Set Archivo5="%5"
  6. Set Archivo6="%6"
  7. Set Archivo7="%7"
  8. Set Archivo8="%8"
  9. Set Archivo9="%9"
  10.  
  11.  
  12. Set Archivo10="%2"
  13. Set Archivo11="%3"
  14. Set Archivo12="%4"
  15. Set Archivo13="%5"
  16. Set Archivo14="%6"
  17. Set Archivo15="%7"
  18.  
  19. etc...


Pero claro, sin conocer cuantos archivos se han arrastrado al .bat... pues el uso del SHIFT podría ser infinito...  :xD

Por cierto tengo otra pregunta, en el code de arriba, se puede simplificar lo que he echo con SHIFT?

Lo que hago en el código es borrar los 8 argumentos, pero se puede hacer en un solo código en vez de usar 8 líneas? es que si uso "Shift /8" creo que no hace lo mismo, no me funciona como quiero xD


Un saludo!


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: leogtz en 8 Julio 2011, 17:42 pm
Mmmm, has probado ir borrando argumentos consecutivamente (con un for), claro que antes deberías guardar los elementos que no tengan una longitud de cero, almacenalos en un array.


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: SuperDraco en 8 Julio 2011, 18:01 pm
Necesitaria un script "boceto" para ver como se haría eso xDDD

Lo de los argumentos que tengan longitud 0 ok.

Pero como haría el for sobre los argumentos?


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: leogtz en 8 Julio 2011, 21:45 pm
Mira, no he utilizado for, pero el siguiente código te ayuda a saber cuántos argumentos se le envían al script.

Código
  1. C:\Users\leo>code
  2. Posible numero de argumentos : 0
  3.  
  4. C:\Users\leo>code bla
  5. Posible numero de argumentos : 1
  6.  
  7. C:\Users\leo>code hola mundo cruel batch
  8. Posible numero de argumentos : 4
  9.  
  10. C:\Users\leo>code a b c d e f g h j h h h h h h h h h  e er r r  df d df f f d d
  11. f f d  f
  12. Posible numero de argumentos : 32
  13.  
  14. C:\Users\leo>


Código
  1. @echo off
  2. % Contador de argumentos %
  3. % argc %
  4. set contador=0
  5. :loop
  6. if "%1"=="" (
  7. call:next %contador%
  8. exit /b 0
  9. )
  10. if %contador% equ 100 (goto:next) else (set /a contador+=1 & goto:loop)
  11.  
  12. :next
  13. echo Posible numero de argumentos : %1
  14.  


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: SuperDraco en 8 Julio 2011, 21:54 pm
justo lo que necesitaba!!!

muchas gracias!!, lo pruebo en cuanto pueda y comento si me surge alguna duda


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: leogtz en 8 Julio 2011, 22:03 pm
Okay, oye, una pregunta, vi que estabas tratando algo sobre enviar emails con batch, pudiste hacerlo?

Mientras dejo otra solución:

Código
  1. @echo off
  2. set contador=0
  3. :loop
  4. set arg=%1
  5. if not defined arg (
  6. call:next %contador%
  7. exit /b 0
  8. ) else (
  9. shift /1
  10. set /a contador+=1
  11. goto:loop
  12. )
  13.  
  14. :next
  15. echo Argc = %1
  16. goto:eof


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: SuperDraco en 8 Julio 2011, 22:33 pm
si, lo han movido a scripting   :P

http://foro.elhacker.net/scripting/zetauploadscript_by_pitoloko_manda_emails_con_un_click_sin_restricciones-t332881.0.html

Pero me gustaría mejorar el manejo de argumentos en el script porque sino me va a quedar un engorro dañiño para la vista  :xD y solo permite hasta 20 archivos al mismo tiempo, o 20 directorios.

Pero bueno solo es un script, el verdadero trabajo es de los que han hecho ese uploader.

Pero tu que sabes tanto de scripting, imaginate las cosas que puedes hacer ,por ejemplo le puedes cambiar la variable %Destino% a mi script, para enviar emails automaticamente a una lista de contactos (Separados por punto y coma ; ) el programa lo permite, me gusta mucho, por desgracia con los archivos no permite separarlos con punto y coma, y ahora me toca sufrir por eso :xD



Creo que el primer batch que has puesto me va a servir, aunque al final tengo que pasar en el LOOP todos los argumentos a un archivo de texto, porque sino tu batch usa SHIFT y me los borra todos, a ver si lo consigo xD


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: leogtz en 8 Julio 2011, 22:42 pm
Pero bueno, suponiendo que hago un pequeño script que me envie a mi email unos datos, qué necesitaría tener en la maquina de donde sale el email?


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: SuperDraco en 8 Julio 2011, 22:44 pm
este programa

https://www.zeta-uploader.com/es/download

nada más!

solo necesitas usar el zulc.exe  ;D bueno aunque he intentado quitar la mayoría de librerias y parece que todo lo del paquete de instalación es necesario (Menos las carpetas de idiomas, y y el zetauploader.exe) parece que el resto de dependencias las usan tanto la version normal como la commandline.

saludosss


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: leogtz en 8 Julio 2011, 23:02 pm
¿Hay que instalarlo?


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: SuperDraco en 8 Julio 2011, 23:05 pm
¿Hay que instalarlo?

Si pero solo para que expanda los archivos a la carpeta de instalación y "quedartelos"... si te bajas mi script acabas antes, ya está todo extraido xD
 
(Es un autoextraible de winrar, lo que te interesa está en la carpeta "enviar email" dentro del rar)


Título: Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
Publicado por: leogtz en 8 Julio 2011, 23:12 pm
Ah, okay, es probable que lo use después, solo me interesa la parte de enviar un email, pero quisiera que fuera sin instalar nada. Gracias.