Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: .:Xx4NG3LxX:. en 21 Diciembre 2019, 23:21 pm



Título: Parámetros en Batch [AYUDA]
Publicado por: .:Xx4NG3LxX:. en 21 Diciembre 2019, 23:21 pm
NECESITO AYUDA!!!

Hola hackers, necesito ayuda con el temita este de los parámetros.

Lo que quiero saber exactamente es como definir
  • %1
  • %2... etc

CUALQUIER AYUDA SE AGRADECE, GRACIAS!!!


Título: Re: Parámetros en Batch [AYUDA]
Publicado por: Serapis en 22 Diciembre 2019, 01:46 am
Son variables... las variables toman valores.

Dado que no son específicas a ningún caso concreto, esto es son genéricos, el nombre es irrelevante, excepto su orden... %1 representa el valor asignado a dicha variable (parámetro), el %2 representa al segundo parámetro etc...

por ejemplo supongamos que se quiere llamar a un programa que va a comprimir, y aparte de la ruta permite ciertos parámetros...
Se podría invocar como:
programa.exe "ruta..." x 1 -d

un bat por ejemplo, representará la ruta con %1, el parámetro x con %2, el valor del tercer parámetro (ese '1'), con %3 y el valor del parámetro '-d' se asignará a %4...

Supongamos que el programa también decidiera interpretar la ruta en otro orden, podría asignarle un prefijo para reconocerlo (pongamos 'r')
...entonces, todavía se podría crear una entrada al menú contextual así:
programa.exe "x" "5" "-de" "r=" %1
es decir el menú contextual recibirá una ruta (1 fichero , una carpeta o más varios), se asigna a ese %1... nota que el resto de parámetros quedan fijos en el menú cotextual... (observa el '5' y el '-de')

Más retorcido aún, esa entrada al menú contextual, podría derivarse a un bat y el bat enviarlo a un ejecutable...
Entonces ese bat asignaría estos valores a cada parámetro según el orden enviado desde el menu contextual (señalado más arriba), que invocando al ejecutable pondría:
programa.exe %1 %2 %3 %4

Ahora la ruta estaría en el parámetro %4, porque es ese el orden en que se fijó en el menú contextual y su valor (contenido) sería: 'r="C:\la ruta\adonde sea\fichero.ext" ', dado el caso que el fichero seleccionado cuando el menú contextual lo active fuere: "C:\la ruta\adonde sea\fichero.ext"

En cualquier caso considera que el %0 es el propio ejecutable (que queda filtrado), y todo lo que venga detrás son los parámetros, lo habitual es recibir al menos un parámetro (típicamente una ruta), pero incluso ninguno... solo invocar el programa lo abre...

En resumen, cada variable así representa el enésimo parámetro recibido (considerado como tal).


Título: Re: Parámetros en Batch [AYUDA]
Publicado por: .:Xx4NG3LxX:. en 22 Diciembre 2019, 02:50 am
Muchas gracias por tu ayuda!!!

Si tengo otra duda te aviso, ok?

Me podrías hacer un ejemplo? Si no es mucho pedir? Es para ver si entendí del todo bien. :xD

DE VERDAD MUCHAS GRACIAS


Título: Re: Parámetros en Batch [AYUDA]
Publicado por: Eleкtro en 24 Diciembre 2019, 10:47 am
un bat por ejemplo, representará la ruta con %1, el parámetro x con %2, el valor del tercer parámetro (ese '1'), con %3 y el valor del parámetro '-d' se asignará a %4...

Te olvidaste de la variable de parámetro '%0', que es la que en realidad representa la ruta de inicio del script. Siguiendo tu ejemplo genérico, si hablásemos del uso de estas variables en el registro de Windows con la intención de asociar un programa que tome como parámetro la ruta actual del archivo o directorio seleccionado, ahí si que se especificaría '%1'.

Aparte, el valor de estas variables se puede definir en el script de forma arbitraria para enviar los argumentos que una subrutina deba procesar.

Más info aquí: https://foro.elhacker.net/scripting/tema_bloqueado_hasta_finalizar_el_tuto_tutorial_extendido_de_aprendizaje_batch-t375135.0.html;msg1797955#msg1797955

Y aquí: https://ss64.com/nt/syntax-args.html

Saludos


Título: Re: Parámetros en Batch [AYUDA]
Publicado por: .:Xx4NG3LxX:. en 24 Diciembre 2019, 16:09 pm
Muchísimas gracias!! De verdad. Me sirvió mucho.

Código
  1. GRACIAS


Título: Re: Parámetros en Batch [AYUDA]
Publicado por: Serapis en 24 Diciembre 2019, 19:40 pm
Te olvidaste de la variable de parámetro '%0', que es la que en realidad representa la ruta de inicio del script. Siguiendo tu ejemplo genérico, si hablásemos del uso de estas variables en el registro de Windows con la intención de asociar un programa que tome como parámetro la ruta actual del archivo o directorio seleccionado, ahí si que se especificaría '%1'.
Pués no, no lo olvidé...

Si lees más abajo, verás que puse esto:
...
En cualquier caso considera que el %0 es el propio ejecutable (que queda filtrado), y todo lo que venga detrás son los parámetros ...