elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 06:55  


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito? [Solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito? [Solucionado]  (Leído 1,433 veces)
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
[BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito? [Solucionado]
« en: 8 Julio 2011, 10:21 »

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
Set Archivo1="%1"
Set Archivo2="%2"
Set Archivo3="%3"
Set Archivo4="%4"
Set Archivo5="%5"
Set Archivo6="%6"
Set Archivo7="%7"
Set Archivo8="%8"
Set Archivo9="%9"
 
shift /2
shift /2
shift /2
shift /2
shift /2
shift /2
shift /2
shift /2
 
Set Archivo10="%2"
Set Archivo11="%3"
Set Archivo12="%4"
Set Archivo13="%5"
Set Archivo14="%6"
Set Archivo15="%7"
 
etc...
pause >nul


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 por Leo Gutiérrez. » En línea

pa que
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


Ver Perfil WWW
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #1 en: 8 Julio 2011, 17:42 »

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 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #2 en: 8 Julio 2011, 18:01 »

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

pa que
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


Ver Perfil WWW
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #3 en: 8 Julio 2011, 21:45 »

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
C:\Users\leo>code
Posible numero de argumentos : 0
 
C:\Users\leo>code bla
Posible numero de argumentos : 1
 
C:\Users\leo>code hola mundo cruel batch
Posible numero de argumentos : 4
 
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
f f d  f
Posible numero de argumentos : 32
 
C:\Users\leo>


Código
@echo off
% Contador de argumentos %
% argc %
set contador=0
:loop
if "%1"=="" (
call:next %contador%
exit /b 0
)
shift /1
if %contador% equ 100 (goto:next) else (set /a contador+=1 & goto:loop)
 
:next
echo Posible numero de argumentos : %1
 
En línea

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #4 en: 8 Julio 2011, 21:54 »

justo lo que necesitaba!!!

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

pa que
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


Ver Perfil WWW
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #5 en: 8 Julio 2011, 22:03 »

Okay, oye, una pregunta, vi que estabas tratando algo sobre enviar emails con batch, pudiste hacerlo?

Mientras dejo otra solución:

Código
@echo off
set contador=0
:loop
set arg=%1
if not defined arg (
call:next %contador%
exit /b 0
) else (
shift /1
set /a contador+=1
goto:loop
)
 
:next
echo Argc = %1
goto:eof
« Última modificación: 8 Julio 2011, 22:13 por Leo Gutiérrez. » En línea

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #6 en: 8 Julio 2011, 22:33 »

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

pa que
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


Ver Perfil WWW
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #7 en: 8 Julio 2011, 22:42 »

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 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
pitoloko


Desconectado Desconectado

Mensajes: 2.500


Ver Perfil
Re: [BATCH] Duda Shift, Y ¿Como saber cuantos argumentos necesito?
« Respuesta #8 en: 8 Julio 2011, 22:44 »

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

pa que
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


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

¿Hay que instalarlo?
En línea

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
pitoloko


Desconectado Desconectado

Mensajes: 2.500


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

¿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)
« Última modificación: 8 Julio 2011, 23:07 por pitoloko » En línea

pa que
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


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

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.
En línea

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
Páginas: [1] 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 584 Último mensaje 29 Abril 2007, 16:12
por jmordenata
[Solucionado] [VBS] Duda sobre los argumentos
Scripting
pitoloko 14 3,000 Último mensaje 2 Abril 2011, 04:50
por pitoloko
[Solucionado] [ Batch ] Problema con argumentos :/
Scripting
pitoloko 7 1,552 Último mensaje 3 Abril 2011, 02:27
por Leo Gutiérrez.
(SOLUCIONADO) Duda sobre clave y argumentos en el regedit
Scripting
pitoloko 3 1,088 Último mensaje 8 Julio 2011, 18:09
por pitoloko
[ Batch] (Solucionado) Problema sobre argumentos %1
Scripting
EleKtro H@cker 5 671 Último mensaje 6 Noviembre 2011, 19:40
por Leo Gutiérrez.
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines