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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Temas
Páginas: 1 2 [3]
21  Programación / Java / Estadio de futbol en: 24 Marzo 2008, 01:19 am
Bueno aqui dejo mi code , de mi primer applet . Un estadio de futbol con unas pelotas rebotando por el campo. Ya aplique varias mejoras, ahora simplemente le falta una que es la mejor, que las pelotas reboten entre si...espero que disfruteis de la aplicacion y intenteis completar la mejora Saludos

Código:
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;


public class Futbol extends Applet implements Runnable {

Image campo, aux;
Balon balon, balon1, balon2, balon3;
Thread t;

public void  init(){
setSize (640, 407);
campo = getImage(getCodeBase(), "img/campo.png");
aux = createImage(640,407);
balon = new Balon (getImage (getCodeBase(), "img/balon0.png"),
270, 153, 5, 2 * Math.PI * 45 / 360, this);
balon1 = new Balon (getImage (getCodeBase(), "img/balon1.png"),
0, 0, 5, 2 * Math.PI * 307 / 360, this);
balon2 = new Balon (getImage (getCodeBase(), "img/balon2.png"),
0, 300, 5, 2 * Math.PI * 103 / 360, this);
balon3 = new Balon (getImage (getCodeBase(), "img/balon3.png"),
540, 0, 5, 2 * Math.PI * 200 / 360, this);}


public void  start(){
t = new Thread(this);
if(t != null) t.start();
}


public void run (){
while (true){
repaint ();
balon.mover(0, 0, 639, 406);//*Blanco y negro movimiento
balon1.mover(0, 0, 639, 406);//*Madrid movimiento
balon2.mover(0, 0, 639, 406);//*Athletico de madrid movimiento
balon3.mover(0, 0, 639,406 );//*Barça movimiento
try{
Thread.sleep(40);//*Velocidad/
}catch (Exception e){

}
}
}
public void update(Graphics g){
paint (g);
}

public void paint (Graphics g){

aux.getGraphics().drawImage(campo, 0, 0, this);
balon.paint(aux.getGraphics());
balon1.paint(aux.getGraphics());
balon2.paint(aux.getGraphics());
balon3.paint(aux.getGraphics());
g.drawImage(aux, 0, 0, this);
}
}

22  Media / Juegos y Consolas / ¿Os apetece? en: 7 Marzo 2008, 20:04 pm
Bueno podeis contestar en este post , si quereis quedar un dia para un partida a algun juego de la play3  para jugar online a una hora en concreto y tal..estaria guapo. Podiamos quedar para jugar al resistance fall of the man porque es el que tendremos casi todos y seria cosa de organizar solo la hora, y crear un grupo en el juego. Bueno si os apuntais podeis dejar por aqui el post...con cualquier sugerencia aunque os apetezca otro juego...

Saludos
23  Media / Juegos y Consolas / Las Fuerzas Aéreas de los EE UU solicitan 300 Ps3 para un programa secreto en: 6 Marzo 2008, 15:21 pm
La PS3 es la forma más económica de conseguir determinados procesadores.
No se ha revelado ningún detalle sobre el proyecto.


El Laboratorio de Investigación de las Fuerzas Aéreas estadounidenses está evaluando una tecnología relacionada con determinados procesadores de celdas muy caros.

Al parecer, según informan en Gamepro, los procesadores de la consola PlayStation 3 de Sony son la única marca del mercado que utiliza ese tipo de procesadores con las características necesarias para su proyecto a un coste aceptable.

Por ello, las Fuerzas Aéreas han solicitado 300 PS3 que utilizarán en un programa del que no se han revelado los detalles.

La consola de nueva generación de Sony ya ha sido utilizada para otros proyectos, como el conocido Folding@home, una iniciativa que trata de entender cierto comportamiento de las proteínas para determinar cómo inciden en diversas enfermedades y en varios tipos de cáncer.

El proyecto, que anima a los usuarios a ceder parte de la capacidad no utilizada del sistema para fines científicos, cuenta ya con 1 millón de voluntarios.



Fuente: 20 Minutos
24  Programación / Java / Agenda java en: 2 Marzo 2008, 23:37 pm
Pues bien es un ejercicio que me mandaron en clase, y lo he intentado hasta el dia de hoy, ya no le veo muchas mas soluciones, es hacer una agenda en java con cuatro metodos agregar,buscar, modificar y eliminar
Concretamente, consegui hacer funcionar el metodo agregar y creo que he detectado el fallo de mi code en los metodos buscar modificar y arreglar pero no me funciona.He conseguido hacer que me busque pero me devuelve valores nulos.Yo creo que se deberia de cambiar unicamente while de agregar en vez de pasare una posicion nula sustituirlo por lo que tiene que buscar pero a mi no me funciona...Me serviria que lo respondieran para mañana , porque hasta ese dia me daban de plazo pero sino no importa no es caso de vida y muerte ahora pondre aqui la clase principal y en los dos post siguientes las otras dos clases

PD: Deje el code listo para compilar y ejecutar el programa. Solo almacenaria los datos ya que lo unico que esta es el de agregar.Recomiendo completar primero el de buscar ya que creo que sera el mas facil pero yo no lo logre funcionar dado que tengo mal casi seguro el bucle while y entonces no me funcionaba en ninguno de los 3

Código:

public class Agenda {
static InputStreamReader isr = new InputStreamReader(System.in);
static BufferedReader br = new BufferedReader(isr);
static Registro registros[];

public static void main(String[] args)throws IOException {
String opcion;
int i=0;
registros = new Registro [2];
for (i=0; i<registros.length; i++)
registros[i] = null;
System.out.println("1 - Añadir");
System.out.println("2 - Modificar");
System.out.println("3 - eliminiar");
System.out.println("4 - Buscar");
System.out.println("5 - Salir");
opcion = br.readLine();
while (!opcion.equals ("0")){
if (opcion.equals("1"))
agregar();
else if (opcion.equals("2"))
modificar ();
else if (opcion.equals("3"))
eliminar();
else if (opcion.equals("4"))
buscar();
else
System.out.println ("Opción incorrecta..");
System.out.println("1 - Añadir");
System.out.println("2 - Modificar");
System.out.println("3 - eliminiar");
System.out.println("4 - Buscar");
System.out.println("5 - Salir");
opcion = br.readLine();

}
}
static void agregar()throws IOException{
String nombre, localidad, calle, provincia;
int numero, piso, cp, i=0;
char letra;
long telefono;

while (registros [i] != null && i<registros.length)
i++;
if (i<registros.length){
System.out.print("Nombre: ");
nombre = br.readLine();
System.out.print("Calle: ");
calle = br.readLine();
System.out.print("Numero: ");
numero = Integer.parseInt(br.readLine());
System.out.print("Piso: ");
piso = Integer.parseInt(br.readLine());
System.out.print("Letra: ");
letra = br.readLine().charAt(0);
System.out.print("Codigo postal: ");
cp = Integer.parseInt(br.readLine());
System.out.print("Localidad: ");
localidad = br.readLine();
System.out.print("Provincia: ");
provincia = br.readLine();
System.out.print("Telefono: ");
telefono = Long.parseLong(br.readLine());
Direccion aux = new Direccion(calle, numero, piso,
letra, cp, localidad, provincia);
registros[i]= new Registro(nombre, aux, telefono);
}
}


static void modificar()throws IOException{
 }
                static void eliminar() throws IOException {
}
static void buscar() throws IOException {     
}
static void salir() throws IOException {
 }
}

Aqui va la clase direccion, aqui creo que no hay que modificar nada, solo hay que hacerlo en la clase agenda pero bueno revisen el code
Código:
public class Direccion {
private String calle, localidad, provincia;
private int numero, piso, cp;
private char letra;

public Direccion(String calle, int numero, int piso,  char letra,
int cp, String localidad, String provincia){
this.calle = new String (calle);
this.piso = piso;
this.letra =letra;
this.cp = cp;
this.localidad = new String (localidad);
this.provincia = new String (provincia);
this.numero = numero;
}

public Direccion(Direccion d){
calle = new String (d.calle);
numero = d.numero;
piso = d.piso;
letra = d.letra;
cp = d.cp;
localidad = d.localidad;
provincia = d.provincia;
}//fin metodo direcion

public void setCalle (String calle){
this.calle = new String (calle);
}//fin metodo set Calle

public void setNumero (int numero){
this.numero = numero;
}//fin metodo seyNumero

public void setPiso(int piso){
this.piso = piso;
}//fin metodo setPiso

public void setLocalidad (String localidad){
this.localidad = new String (localidad);
}//fin metodo setLocalidad

public void setProvincia (String provincia){
this.provincia = new String (provincia);
}//fin metodo setProvincia

public void setCp (int cp){
this.cp = cp;
}//fin metodo setCp

public void setLetra (char letra){
this.letra = letra;
}//fi metodo setLetra

public void print (){
System.out.println(calle + ", " + numero + " - " + piso + letra);
System.out.println(cp + " - "+ localidad);
System.out.println(provincia);
}
}//fin metodo print

Y por ultimo la clase registro

Código:
public class Registro {
String nombre;
Direccion direccion;
long  telefono;

Registro (String nombre, Direccion direccion, long telefono){
this.nombre = new String (nombre);
this.direccion = new Direccion(direccion);
this.telefono =telefono;
}

public void setNombre (String nombre){this.nombre = new String (nombre); }

public void setDireccion(Direccion direccion){
this.direccion = new Direccion(direccion);}

public void setDireccion(String calle, int numero, int piso,
char letra, int cp, String localidad, String provincia){
direccion = new Direccion (calle, numero, piso, letra, cp,
localidad, provincia);
}

public void setTelefono (long telefono){this.telefono = telefono;}

public String getNombre(){return nombre;}

public Direccion getDireccion(){return direccion;}

public long getTelefono(){return telefono;}

Registro (Registro r){
nombre = new String (r.nombre);
direccion = new Direccion(r.direccion);
telefono = r.telefono;
}

public void print (){
System.out.println("Nombre: " + nombre);
System.out.println("Direccion: ");
direccion.print();
System.out.println("Telefono: " + telefono);
}
}
25  Programación / Scripting / Tutorial Batch desde 0,0(básico en: 1 Marzo 2008, 19:31 pm
  Tutorial de Batch

Bueno voy a empezar por decir que para empezar a "programar en batch" es recomendable tener ciertos conocimientos de MS-DOS, yo tratare de explicar todos los comandos y utilidades de MS-DOS.En este tema solamente voy a poner lo que es Batch puro.Por cierto igual que todo la redaccion de los comandos es sacada de libros yo solo he ido ampliando copiando o quitando información innecesaria, sobre lo que hay por el tuto podeis preguntar ya que de lo que hay aqui lo manejo bastante bien.Es manejo básico aunque ya se hacen programillas con esto.

Se dice que un fichero es de tipo bat (BATCH) o de tratamiento por lotes cuando está formado por un grupo o lista de órdenes MS-DOS que se ejecutan una tras otra.
En determinados casos, este tipo de ficheros nos permite ahorrar tiempo, ya que, una vez grabado en disco, con sólo teclear su nombre se ejecutan las órdenes que forman la lista.
Para crear un fichero BAT, se utiliza el editor de MS-DOS, tan fácil de abrir como ir a simbolo de sistema y poner edit ( pero ojo , es peligroso trabajar con ficheros bat desde máquinas reales, bueno con este tutorial aprendereis a no poner en peligro vuestro pc).
Otra opción para crear ficheros bat, es abrir el bloc de notas, cuando lo guardemos, darle extensión bat en vez de txt
Un ejemplo de fichero Bat podría ser, ejemplo.bat compuesto por las órdenes: date,cls,dir,ver....    Para ejecutarlo c:\>ejemplo asi sería desde simbolo de sistema y la opción del bloc de notas sería hacer doble click en el archivo, y entonces se ejecutarían las ordenes que explicare mas adelante.

Algunas de las características de este tipo de ficheros, son las siguientes:
   -Todos llevan extensión BAT
   -Cada orden ocupa una línea de la lista.
   -Pueden incluir órdenes internas y externas del sistema operativo, comandos especiales de los ficheros BAT, incluso pueden llamar a otros ficheros           ejecutables, que pueden ser otros BAT. 
   -No se puede asignar como nombre de un fichero BAT el de una orden externa o interna, ya que entonces solo se ejecutará ésta y no el fichero.
   -Podemos interrumpir la ejecución de un fichero BAT pulsando simultáneamente Control+C, Control+BREAK
   -Una vez grabado en disco, sólo es preciso teclear su nombre, sin indicar extensión, para que se ejecute.

Si en un directorio concreto existe un fichero llamado program.exe y otro llamado program.bat, siempre se ejecutará primero el de extensión BAT. Es decir, si queremos ejecutar cualquiera de ellos, tendremos que especificar además su extensión

                                                                             Comandos especiales de ficheros BATCH

Comando:    ECHO
Este comando puede ser utilizado para varios propósitos:
   -Activar o desactivar la visualización de los comandos en la pantalla.
   -Mostrar un mensaje por pantalla
Sintaxis:     ECHO [ON | OFF] [MENSAJE]

ECHO    ,escrito asi solo mostraría en pantalla si el eco está activado o desactivado.
ECHO.   ,introduce una línea en blanco
ECHO MENSAJE    , mostraría la palabra mensaje por pantalla, es decir, podemos mostrar un mensaje por pantalla.
ECHO ON     ,activa el eco y se ven en pantalla todos los mensajes
ECHO OFF      ,desactiva el eco y no se ven pantalla los mensajes hasta que se vuelva activar pero no desactiva las órdenes
@ECHO OFF     ,desactiva todos los ecos del programa ademas de las ordenes

Normalmente, los comandos incluidos dentro de un fichero BATCH se visualizan en la pantalla a medida que se van ejecutando; esto es, tienen un eco. Si esto ocurre, el ECHO estará en ON.
Si queremos que los comandos no aparezcan en pantalla, podemos desactivar el ECHO con la opción OFF.
Normalmente, se pone la primera línea de programa la orden ECHO OFF si no queremos ver ningún mensaje de llamada. Lo que sí aparecerá será la ejecución de la propia orden, ya que para sí misma aun sigue activa.
Si queremos que no se vea ni siquiera la propia orden de desactivar el eco, colocaremos el carácter @ delante de ECHO OFF. De esta forma no veremos nada.

Comando:    REM
Este comando es utilizado para:
Permite incluir comentarios explicativos en un archivo de proceso por lotes. Este mensaje será visualizado sólo en el caso de que esté activado el comando de procesamiento por lotes ECHO.

Sintaxis:     REM [Comentario]

Podemos usar REM sin comentarios para añadir espacios que faciliten la lectura.
Esta orden no ejecuta nada, simplemente introduce el comentario que, posteriormente, puede ser visualizado o no.Es recomendable incluir comentarios en los ficheros de procesos por lotes, con el fin de clarificar qué es lo que hacemos con cada orden o conjunto de órdenes.

Comando:    PAUSE
Este comando es utilizado para:
Suspende temporalmente la ejecución de un archivo de procesamiento por lotes.

Sintaxis:     PAUSE [Comentario]

Cuando se está ejecutando un archivo de procesamiento por lotes, puede ser necesario cambiar de disco o realizar alguna acción. Este comando suspende la ejecución del archivo hasta que se presione cualquier otra tecla, a menos que se presione Control+BREAK o Control+C, en cuyo caso se suspenderá la ejecución del comando.
Este párametro es útil cuando se desea mostrar un mensaje especial

                                                                             Ficheros BATCH con parámetros

Pueden darse ocasiones en las que se quiera crear un programa y ejecutarlo con diferentes conjuntos de datos. Estos datos pueden estar almacenados en varios archivos MS-DOS. Estos parámetros se introducen desde el símbolo del sistema, tras el nombre del fichero de procesamiento por lotes.
Dentro de un fichero BATCH es posible emplear hasta nueve parámetros, los cuales son identificados por los caracteres %n, donde n es un numero comprendido entre 1 y 9. Es decir, dentro de un fichero BATCH podemos emplear los siguientes parámetros: %1, %2.......%9.
Si nuestro fichero BATCH incluye un parámetro, este sera sustituido por el nombre introducido tras el nombre del fichero por lotes.

EJEMPLO
Supongamos que queremos realizar un programa en BATCH que visualice,imprima y copie un fichero concreto al directorio raíz  de la unidad A:, Mediante el editor de textos, crearíamos un programa ejemplo.bat con el siguiente contenido:

@ECHO OFF
TYPE %1
PRINT %1
COPY %1 a:\

Una vez creado el programa si lo ejecutamos de la siguiente forma:
c:\>ejemplo
Lo único que se producirá sería un error. El siguiente:
Falta un parámetro requerido.
La ejecución correcta sería la siguiente:
c:\>ejemplo fichero.txt
Es evidente que fichero.txt es el parámetro que estamos pasando al programa por lotes

Cada parámetro es posicional respecto de lo que introducimos tras el nombre del fichero de proceso por lotes. Si introducimos dos parámetros, %1 y  %2, el fichero BATCH esperará a que se le introduzcan dos parámetros tras el nombre del fichero. Cada parámetro se introduce separado por un espacio en blanco. El primer parámetro se sustituirá por %1; el segundo, por %2, y así sucesivamente, pero de forma fija en todo el proceso.

EJEMPLO
Supongamos que creamos el fichero ejemplo.bat que visualice el primer fichero que introduzcamos,imprima el segundo y copie el tercero:

@ECHO OFF
TYPE %1
PRINT %2
COPY %3 a:\

Una vez creado el programa lo ejecutariamos de la siguiente forma:
c:\>ejemplo texto1.txt fich2.txt program.exe
De esta forma, texto1.txt se visualiza, fich2.txt se imprime y en el directorio raíz de la unidad A: copiamos el fichero program.exe.
Si en este ejemplo introducimos más de tres parámetros, los restantes serán ignorados. Si introducimos menos, se producirá un error indicando que falta algún parámetro.
La ventaja de tgrabajar con parámetros reemplazables es que un mismo fichero BATCH puede ser utilizado para cualquier fichero de nuestro ordenador, siendo el nombre del fichero el parámetro pasado al fichero de proceso por lotes. Si no existiesen los parámetros, tendríamos que repetir el fichero BATCH para cada archivo que lo utilizase.

                                                               Instrucciones BATCH para control del proceso de ejecución







Comando: IF
Con esta orden se desvía el proceso de ejecución de un fichero por lotes según sea verdadera o falsa la condición que se evalúa tras IF. Si la condición se cumple o es verdadera, se ejecuta la orden especificada detrás de la condición. Después, se continúa en la línea siguiente a la orden IF.
Si la condición es falsa, la ejecución del proceso por lotes continúa en la siguiente línea sin ejecutarse la línea específicada tras IF.

Sintaxis:      IF [NOT] ERRORLEVELn COMANDO
                   IF [NOT] cadena1 == cadena2 COMANDO
                   IF [NOT] EXIST fichero COMANDO

NOT
Indica que se ejecute el comando especificado cuando no se cumpla la condición

ERRORLEVELn
Ejecutará el comando cuando el programa ejecutado antes de esta orden devuleva un valor igual al indicado en el número n. Por lo general, el valor devuelto será 0 cuando no haya existido error.
Cada vez que en MS-DOS se ejecuta una orden, el sistema operativo, aunque nosotros no lo veamos, devuelve un número. Este número será un o, si la orden se ha ejecutado correctamente, y cualquier otro si ha sido incorrecta.
Con ERRORLEVEL se puede comprobar que el resultado de la ejecución de una orden ha sido correcto o incorrecto.
Solamente las siguientes órdenes de MS-DOS devuelven un valor después de ser ejecutadas.

CHOICE   DISKCOMP     DISKCOPY     DEFRAG    DELTREE    FIND     FORMAT   KEYB    MOVE     REPLACE     RESTORE     SETVER     XCOPY

EJEMPLO
Supongamos que queremos realizar un programa en BATCH llamado formateo.bat que permita dar formato a disquetes que tengan un tamaño de 720 o de 1440 Bytes. Si el formato es correcto indicaremos por pantalla tal acción o, en caso contrario,que no ha sido correcta. Para ello, vamos a introducir dos parámetros; unidad lógica del disquete(A: o B: ) y tamaño del disquete:

@echo off
rem Programa para formatear disquetes
format%1 /f:%2
IF ERRORLEVEL 0 ECHO Formato realizado con éxito
IF NOT ERRORLEVEL 0 ECHO Formato NO realizado

En este caso, al ejecutar el programa tendríamos que proceder de la siguiente forma:
Formateo A: 1.44
%1 toma como valor A:, y %2 toma como valor 1.44 .Si todo es correcto, se muestra el mensaje adecuado


Cadena1 == Cadena2
Ejecutará el comando cuando cadena1 y cadena2 sean idénticas. Las cadenas no pueden contener separadores tales como comas, punto y coma, signo igual o espacio en blanco.
La utilización de este parámetro es menos práctica, ya que solamente compara dos cadenas de caracteres. Se diferencian mayúsculas y minúsculas. Se suele utilizar para saber si, en procesos por lotes que tengan parámetros, se han introducido parámetros o no.
En nuestro ejemplo anterior, el usuario puede olvidar introducir el parámetro primero. Sin él, el proceso BATCH se ejecutará provocando errores y resultados inesperados o indeseados.
Si previamente analizamos si se han introducido loe parámetros, la ejecución del proceso será más limpia.


EJEMPLO
Supongamos que queremos saber si se ha introducido el nombre de la unidad que vamos a formatear. La orden sería la siguiente:
IF %1== ""
Si no se ha introducido el parámetro, su valor se sustituye por espacios en blanco. Como lo que se compara es lap rimera cadena (que son espacios en blanco) con la segunda cadena (que también son espacios en blanco, ya que no hemos puesto nada), la condición sería correcta.
En este caso, enviaríamos el correspondiente mensaje de error e interrupiríamos la ejecución del proceso BATCH.

EXIST Fichero
Ejecutará el comando cuando exista el fichero específicado. Este parámetro indica el nombre de un fichero en una trayectoria concreta. Si no se especifica trayectoria, se asume la unidad activa y el directorio activo. No funciona con directorios directamente, pero se puede buscar el nombre de un directorio si tras él especificamos el nombre del dispositivo NUL, que si será considerado como fichero


EJEMPLO
Supongamos que queremos saber si existe un fichero llamado fichero.txt en el directorio raíz de la unidad A:. Pondremos lo siguiente:

IF EXIST  a:\fichero.txt ECHO
              El fichero si existe

Si queremos saber si existe, por ejemplo, el directorio datos como directorio hijo del directorio raíz de la unidad A:, tendriamos que poner lo siguiente:

IF EXIST a:\datos\nul ECHO
              El fichero si existe

En este caso compureba la existencia del dispositivo NUL dentro del directorio datos. Como este fichero (dispositivo) siempre existe, no se produce error. Si existe realmente el directorio datos ,aunque no tenga ningún fichero o no tenga el que nosotros deseamos, sabremos si existe o no.

Cuando veamos la orden GOTO, haremos bifurcaciones condicionales a otras partes de un proceso BATCH y aprenderemos a continuar en cualquier parte del proceso deseado teniendo en cuenta que se cumpla o no una deerminada condición

GOTO
Desvía la ejecución del proceso a un bloque o conjunto de líneas especificadas en el mismo fichero.

Sintaxis: GOTO [:] ETIQUETA

GOTO permite transferir el control a la línea siguiente a la de etiqueta, donde etiqueta se define como los caracteres que siguen al comando GOTO. Esta etiqueta pueda incluir espacios, pero no otros separadores tales como punto y coma o el signo igual. Si el archivo procesamiento por lotes no contiene una etiqueta especificada, dejara de ejecutarse.
Cualquier linea en un archivo de procesamiento por lotes que comience con dos puntos se ignora durante el procesamiento, ya que se considera como etiqueta.

EJEMPLO

Supongamos a continuacion el proceso formateo.bat Vamos a modificar algunas condiciones de tal forma que si el formato es correcto se visualice el mensaje de que ha sido correcto y ademas vamos a copiar el archivo datos.dat del directorio raiz en la unidad c: en el directorio raiz de la unidad recien formateada con el nombre nuevo.dat. En caso de error no haremos nada.
El programa formateo.bat sería el siguiente:

@echo off
REM Programa para formatear disquetes
FORMAT %1 /f:%2
IF NOT ERRORLEVEL 0 GOTO :INCORRECTO
IF ERRORLEVEL 0 GOTO :CORRECTO
:CORRECTO
ECHO El disco se ha formateado con exito
COPY C:\datos.dar a:|nuevo.dat
GOTO :FIN
:INCORRECTO
ECHO El disco no se ha formateado
:FIN

CHOICE
Esta orden cumple una triple función en los ficheros BATCH:

-Muestra un mensaje en pantalla y detiene la ejecución del proceso por lotes.
-Espera a que el usuario pulse una tecla previamente prediseñada
-Activa un código de salida ERRORLEVEL según la tecla pulsada

Se utiliza principalmente para permitir al usuario introducir parámetros en tiempo de ejecución del proceso BATCH.

Sintaxis: CHOICE TEXTO][/c[:TECLAS]

[/n][/s][/t][:]TECLA,SEGUNDOS]

TEXTO es lo que queremos que se visualice cuando se ejecute la orden CHOICE.

/c:teclas. Se utiliza para definir las teclas que el usuario puede pulsar cuando se ejecuta la orden. Si deseamos que este orden reconozca como teclas, validas las teclas correspondientes a los caracteres S y N, especificaremos: CHOICE /c:SN

Cuando el usuario pulsa una de ellas, se activa el código de salida de ERRORLEVEL, correspondiente a la posición de la tecla en el parámetro /C. El carácter S devolvería una salida para ERRORLEVEL de 1.El carácter N devolvería2.
Da igual que sean mayúsculas o minúsculas

/n visualiza primero en pantalla la cadena de caracteres del parámetro TEXTO, y luego el mensaje de teclas

/t se utiliza para introducir que tecla se asumirá por defecto poner como directorio activo si el usuario no pulsa ninguna pasado un determinado tiempo que se especifica en segundos

EJEMPLO
Supongamos que queremos realizar un fichero BAT que nos ponga como directorio activo uno u otro en una unidad concreta , dependiendo de la tecla que pulsemos. El fichero se llamara directo.bat y nos pondra como directorio y unidad activa el directorio raíz de A: si pulsamos la tecla A, en el raiz de C: si pulsamos C y en c:\dos si pulsamos B. No hay tecla por defecto

@ECHO OFF
CLS
REM Proceso para situarse en un directorio
ECHO.
ECHO A. Para poner directorio activo a:\
ECHO B. Para poner directorio activo c:\dos
ECHO C. Para poner directorio activo c:\
ECHO.
CHOICE "Pulse una tecla " /c:ABC
ECHO.
IF ERRORLEVEL 3 GOTO :RAIZC
IF ERRORLEVEL 2 GOTO  OSC
IF ERRORLEVEL 1 GOTO :RAIZA
IF ERRORLEVEL 0 GOTO :FIN
:RAIZA
CD A:\
GOTO :FIN
 OSC
CD C:\
:FIN


FOR
Con esta orden se puede repetir un proceso un número determinado de veces. Se utiliza para aplicar un mismo proceso a un conjunto de elementos. El mismo proceso se realiza sobre diferentes elementos hasta completar el conjunto

Sintaxis: FOR %%VARIABLE IN CONJUNTO DO COMANDO

Para evitar confusión con los parámetros %1, %2....%9 utilizados en los archivos de procesamiento por lotes, el nombre de la variable puede ser cualquier carácter excepto 1,2....9

Este comando asigna secuencialmente la variable a cada elemento del conjunto y utiliza esta variable para evaluar el comando. Si un elemento del conjunto es una expresión que contiene un comodín, entonces la variable asigna a cada elemento que cumpla la condición.

EJEMPLO

Supongamos que queremos realizar un programa BAT, llamado imprimir.bat que visualice tres archivos, denominados doc1.txt, doc2.txt y doc3.txt. Para ello introduciremos dentro del fichero imprimir.bat lo siguiente:


FOR %%v IN (doc1.txt doc2.txt doc3.txt)
DO TYPE %%v

Este mismo ejemplo se podría haber realizado con archivos que no sean específicados. Es decir, los nombres de archivo especificados dentro del conjunto pueden ser aquellos que cumplan una determinada plantilla (por ejemplo, *.txt), o parametros determinados capaces de sustituir a un archivo introducido por teclado antes de ejecutar el programa
Este mismo ejemplo lo podemos hacer de la siguiente forma:

FOR %%V IN (*.TXT) DO TYPE %%V

También podemos realizar un proceso con parámetros, que posteriormente introduciremos desde teclado. La orden que sería la siguiente:

FOR %%V IN (%1 %2 %3) DO TYPE %%V

La única diferencia se da a la hora de ejecutar el programa ya que en los dos casos anteriores pondríamos solamente


C:\>imprimir

En el último caso tendremos que poner:

C:\>imprimir doc1.txt doc2.txt doc3.txt

Si el número de parámetros es mayor o menor a los específicados en el conjunto, ocurrirá lo mismo que en cualquier otro proceso que utilice parámetros


CALL
Esta orden sirve para llamar a procesos BATCH dentro de otros que ya se están ejecutando. De esta forma, el proceso que llama se interrumpe temporalmente para ceder el control de la ejecución al proceso que ha sido llamado. Cuando finalice el proceso al que se llamó, el control vuelve al proceso principal

Sintaxis: CALL FICHERO [PARÁMETROS]

FICHERO especifica el fichero al que se está llamando.
Este nombre de fichero puede incluir, si es necesario, una ruta o trayectoria, pero en el nombre de fichero no se pondrá la extensión BAT

EJEMPLO
Supongamos que realizamos un programa o fichero principal.bat, que ejecutará dos procesos: procesoa.bat y procesob.bat. El contenido de principal.bat es el siguiente:

@ECHO OFF
CLS
CALL PROCESOA
CALL PROCESOB
PAUSE
CLS

El contenido de procesoa.bat es el siguiente:

@ECHO OFF
CLS
DIR c:\*.*

El contenido de procesob.bat es el siguiente:

@ECHO OFF
CLS
DATE
TIME


SI COPIAS ESTE POST , PON SIEMPRE SU AUTOR
Páginas: 1 2 [3]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines