Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Diciembre 02, 2008, 05:26:50
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, |Shadow|)  |  Tema: Solucionando problemas: %0 %1 -By: Espectro Infernal- 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Solucionando problemas: %0 %1 -By: Espectro Infernal-  (Leído 511 veces)
Espectro Infernal
T0 d0: -> Mejorar 3 en raya
Moderadores
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1055


ESPECTRO INFERNAL


Ver Perfil Email
« en: Febrero 21, 2007, 04:57:01 »

juegos gratis
Bueno, veo que hay algunos users que tienen dudas sobre el uso de los parámetros %0. Para evitar más posts y facilitar la ifnromarmación, aquí les dejo un manual breve que solucionará sus dudas.

Para empezar, los parámetros %0 %1, etc. Van asignados detras de los comandos para referirse al propio archivo o otras opciones; si no queda muy claro ponemos un ejemplo:

  @echo off
rem Este .bat se situa en c:\ y se llama "one"...
rem Crea una carpeta en c:\ llamada "prueba"...
Copy %0 c:\prueba\saludo
msg * Ya se ha copiado
exit

Si lo ejecutas, se copiará un .bat a la carpeta Prueba de la unidad c:\ Si te fijas, es el mismo .bat que ejecutaste. Entonces ya puedes sacar una conclusión:

El parámetro "%0" (sin comillas:P) hace referencia al propio .bat, algo similar en vb.net con la palabra Me Wink

Bien, ya se lo que hace el paràmetro %0, vamos a hacer otro code para que quede más claro. En este caso usaremos el comando del. Haremos que el propio .bat se autodestruya sin dejar huella:

  @echo off
del %0
exit

Bien, el propio .bat en ejecución se autodestruye. Esto no es funcional, vamos a agregarle un comando más para que vean mejor:

  @echo off
shutdown -s -f -t 10
del %0
exit

Con esto ponemos en marcha un contador que forzará el cierre de las aplicaciones en apagarse el sistema y se eliminará el propio .bat sin dejar huella.

Bien, ahora vamos con los demás parámetros. Fíjate que he explicado el parámetro %0 por separado, pues es el único especial con respecto a los demás. Ahora lo vas a entender mejor.

Los parámetros %1, %2, %3... son unos parámetros que no hacen una función concreta si no son llamados. Para entenderlo, crea el siguiente .bat en unidad c:\ y llámano "ei":

  @echo off
msg * %1
del %0
exit

Bien, si lo ejecutas no notaras nada muy diferente... como hemos dicho, estos parámetros hay que llamarlos. Guarda el .bat como hemos dicho antes, drígete a la cmd y escribe:

c:\ei.bat HOLA

Donde HOLA hace referencia al parámetro %1

Verás que se ejecutara el .bat mostrando el mensaje HOLA.

Velve a crear el .bat:

  @echo off
msg * %1 %2 %3 %4
del % 0
exit

Vamos a llamarlo, abre la cmd:

c:\ei.bat HOLA AMIGO MIO !!!

Como ves, el resultado es el esperado, un mensaje con los parámetros %1,%2,%3,%2 Donde

%1 = HOLA

%2 = AMIGO

%3 = MIO

%4 = !!!

Y el codigo sustituido acabaria en:

  @echo off
msg * HOLA  AMIGO  MIO  !!!
rem      %1     %2     %3   %3
exit

Bien, acabaremos jugueteando un poquillo más. crea un .bat en la unidad c:\ y llámalo "mk". Y una carpeta en c:\ llamada "prueba":
En el .bat, escríbe lo siguiente

  @echo off
msg * %1
copy %0 c:\prueba\%2.bat
msg * %3
exit

Dirígete a la cmd y teclea:

c:\mk.bat PRIMERO COPIADO ADIOS

- El resultado es el esperado.

Un manual breve y sencillo, espero que os sirva Wink


Bytes, Espectro Infernal.



----- Gracias a un aporte de mi amigo Scofield se os explica el comando SHIFT relaciondo directamente con estos parámetros:

La declaracion de argumentos de un programa admite en principio la cantidad de parametros que sean necesarios. Pero en cambio el lenguaje batch de windows nt tan solo puede reconocer los 9 primeros argumentos del programa, es decir, no sera valido un acceso a la variable %10 con complejidad constante ya que no hay unpuntero directo al argumento.

Como acceder a variables superiores a %9? Pues bien, es sencillo. Se usa el mandato SHIFT, el cual desplaza una posicion a la izquierda todos los arugmentos introducidos.

Es decir: %0 <- %1 <- ... %9 <- %10 ...

Siendo los argumentos %0 y %1 inmodificables.
De esta forma ya es visible el argumento 10 y como podeis observar, su acceso se realiza en complejidad O(n), siendo n el numero de argumentos actuales. y la complejidad, la misma que la de la operacion shift.

Otra cosa que nos hemos dejado en el tintero: para referenciar a todos los argumentos, usaremos %*
« Última modificación: Abril 08, 2008, 01:35:16 por Espectro Infernal » En línea





NumaH
Miembro
*****
Desconectado Desconectado

Mensajes: 126


Ver Perfil
« Respuesta #1 en: Febrero 21, 2007, 06:15:19 »

En línea
__volatile__
Colaborador
*****
Desconectado Desconectado

Mensajes: 781


<3 lisa

x_0@hotmail.de
Ver Perfil Email
« Respuesta #2 en: Febrero 22, 2007, 01:21:51 »

Hey gracias por el consejo... aunque me quedaron pocas cosas claras Tongue broma bueno ahora a entrenar eso.. oye por que no te haces un manualcito con el comando FOR???

salud0s


c0d34
En línea

R-E-S-P-E-C-T, find out what it means to me
Espectro Infernal
T0 d0: -> Mejorar 3 en raya
Moderadores
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1055


ESPECTRO INFERNAL


Ver Perfil Email
« Respuesta #3 en: Febrero 22, 2007, 03:49:59 »

En línea





Micki Qwerty
Visitante
« Respuesta #4 en: Febrero 23, 2007, 08:15:30 »

« Última modificación: Febrero 23, 2007, 08:16:38 por /Migue » En línea
Espectro Infernal
T0 d0: -> Mejorar 3 en raya
Moderadores
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1055


ESPECTRO INFERNAL


Ver Perfil Email
« Respuesta #5 en: Febrero 24, 2007, 09:47:41 »

En línea





Micki Qwerty
Visitante
« Respuesta #6 en: Febrero 24, 2007, 01:34:28 »

En línea
Espectro Infernal
T0 d0: -> Mejorar 3 en raya
Moderadores
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1055


ESPECTRO INFERNAL


Ver Perfil Email
« Respuesta #7 en: Febrero 24, 2007, 02:01:29 »

En línea





Micki Qwerty
Visitante
« Respuesta #8 en: Febrero 25, 2007, 07:07:07 »

« Última modificación: Febrero 25, 2007, 07:07:38 por /Migue » En línea
Espectro Infernal
T0 d0: -> Mejorar 3 en raya
Moderadores
Gran Colaborador
*****
Desconectado Desconectado

Mensajes: 1055


ESPECTRO INFERNAL


Ver Perfil Email
« Respuesta #9 en: Febrero 25, 2007, 07:23:56 »

En línea





Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  Batch (Moderadores: Espectro Infernal, |Shadow|)  |  Tema: Solucionando problemas: %0 %1 -By: Espectro Infernal- « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC