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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito? [Solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito? [Solucionado]  (Leído 9,002 veces)
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
[BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito? [Solucionado]
« 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!


« Última modificación: 21 Julio 2011, 08:48 am por Leo Gutiérrez. » En línea

No he vuelto, solo estoy de paso.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #1 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.


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #2 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?
En línea

No he vuelto, solo estoy de paso.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #3 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.  
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #4 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
En línea

No he vuelto, solo estoy de paso.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #5 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
« Última modificación: 8 Julio 2011, 22:13 pm por Leo Gutiérrez. » En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #6 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
En línea

No he vuelto, solo estoy de paso.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #7 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?
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #8 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
En línea

No he vuelto, solo estoy de paso.
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #9 en: 8 Julio 2011, 23:02 pm »

¿Hay que instalarlo?
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cómo saber qué argumentos son dados
PHP
jmordenata 2 2,197 Último mensaje 29 Abril 2007, 16:12 pm
por jmordenata
[Solucionado] [VBS] Duda sobre los argumentos « 1 2 »
Scripting
SuperDraco 14 11,494 Último mensaje 2 Abril 2011, 04:50 am
por SuperDraco
[Solucionado] [ Batch ] Problema con argumentos :/
Scripting
SuperDraco 7 5,598 Último mensaje 3 Abril 2011, 02:27 am
por leogtz
(SOLUCIONADO) Duda sobre clave y argumentos en el regedit
Scripting
SuperDraco 3 4,453 Último mensaje 8 Julio 2011, 18:09 pm
por SuperDraco
[ Batch] (Solucionado) Problema sobre argumentos %1
Scripting
Eleкtro 5 4,546 Último mensaje 6 Noviembre 2011, 19:40 pm
por leogtz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines