Página 2 de 2 PrimerPrimer 12
Resultados 21 al 25 de 25

Programacion Batch

  1. #21  
    Iniciado
    Fecha de ingreso
    Jul 2007
    Ubicación
    En la playa :)
    Mensajes
    48
    Descargas
    0
    Uploads
    0
    For
    Ejecuta un comando especificado para cada archivo de un conjunto de archivos.


    Sintaxis
    for {%variable | %%variable} in (grupo) do comando [opcionesDeLíneaDeComandos]
    Parámetros
    {%variable | %%variable}

    Bueno, pues este comando es un poco mas complicado, pero no tanto, este comando lo que hace es generar un bucle, que es un bucle?, bueno es la repeticion de una accion, esto se utiliza para no tener que escribir un mismo codigo varias veces, ahorrando tiempo y dando claridad al programa.

    For = Para, in = en, do = hacer, por lo que la sintaxis diria: Para la variable en el grupo hacer tal comando, la variable va a ser un numero mas que nada,
    por lo que si la variable vale 5, el bucle se va a repetir 5 veces, hay dos formas de hacer un bucle for en batch, bueno hay varias, pero las mas sencillas son: metiendo a la variable el numero de archivos que exista, o metiendo a la variable un numero determinado. Primero veremos como se hace con archivos.

    A otra cosa que se me olvido explicar es que la variable va a llevara al inicio un solo signo % cuando se ejecute en la consola, y dos signos % cuando se ejecute en un proceso por lotes (cuando hagas un programita), yo voy a utilizar el %% porque es el que nos interesa.

    Tambien tengo que explicarles que la variable no puede ser un numero, pero si una letra, cabe mencionar que el comando for distingue entre mayusculas y minusculas, por lo que no es lo mismo la variable %a y %A, y solo pueden estar 52 variables activas al mismo tiempo (si multiplicas el numero de letras por 2 (mayusculas y minusculas) te da 52 jejje).

    Ahora si, ejemplos:

    supongamos que en un directorio tenemos varios archivos, y que tenemos:

    tarea1.txt
    tarea2.txt
    tarea3.txt
    foto1.jpg
    foto2.jpg
    foto1.bmp
    foo_fighters.mp3


    entonces lo que vamos a hacer es darle a la variable los archivos que queremos para que los tome como numero, ejmplo, si queremos tomar una accion para todos los archivos hacemos lo sig.:

    for %%e in (*.*) do copy %%e a:\respaldo

    Los parentesis siempre los tienen que poner, el for, in, do nunca cambian. Aqui lo que hacemos es simplemente decirle al for que para todos los archivos con cualquier extension que tenemos(con el comodin *) haga la siguiente accion, que es copiarlos a la unidad a:\ en la carpeta respaldo.

    Otro ejemplo, si queremos borrar los archivos con extension .txt, hariamos lo sig.:

    for %%g in (*.txt) do del %%g

    Como ven, les menti un poco anteriormente, porque la variable en si lo que tiene dentro es el nombre del archivo que esta ejecutando, o sea que el bucle se ejecuta tantas veces como grupo de archivos haya, pero lo bueno es que se entiende no?, aqui lo unico que se hizo fue: al existir un archivo .txt guardo el nombre del archivo en la variable, entro en el bucle una vez, e hizo la accion de borrar el archivo que contenia la variable, en este caso el primer archivo, despues checo si existia un segundo archivo .txt, como si existia un segundo, cambio el valor de la variable por el segundo archivo,entro al bucle de nuevo y borro el archivo cque contenia la variable, verifico si existia un tercer archivo .txt, y como si existia, cambio el valor de la variable por el tercer archivo con extension .txt, entro al bucle y... ya se imaginaran lo que hizo, despues, verifico si existia un cuarto archivo con extension .txt y al no encontrarlo salio del bucle.

    Para hacer este procedimiento sin un for, tendriamos que haber utilizado varios if y varios goto, por lo que el programa quedaria muy grande, cuando con un for de una linea podemos hacer una accon repetida las veces que sea necesario, como ven es muy util el for, aunque hay que saber utilizarlo, de otra forma no les facilitara las cosas demasiado.

    Otro ejemplo, si queremos renombrar todos los archivos que tengan el nombre foto1 con cualquier extension hariamos lo sig.:

    for %%L in (fot1.*) do ren %%L foto.txt

    Con esto renombramos a todos los archivos foto1 de cualquier extension a foto con extension .txt

    Si queremos mover mover todos los archivos que empiezen por f con cualquier extensio, hacemos lo sig.:

    for %%C (f*.*) do mv %%C "e:\mis cosas"

    Listo, ya entendieron creo.

    Ahora veamos el otro tipo de for que les mencione antes.

    Para esto utilizaremos el parametro /L del comando for, lo que vamos a hacer es, en lugar de poner un archivo o grupo de archivos entre parentesis vamos a poner un numero inicial, un contador y un numero final, el numero inicial es el numero en el que iniciara el bucle, el contador sera el numero que se le sumara a la variable, y el numero final sera cuando termine el bucle, con lo que si el numero de la variable es mayor o sobrepasa al numero final, terminara el bucle.

    Vamos a hacer la secuencia en la mente, si el ni(numero inicial) es 1, el cont(contador es 1, y el nf(numero final) es 5, lo que pasaria seria lo sig.

    La variable(var) toma el valor de ni, ejecuta el comando, var toma el valor de var + cont (1 + 1 = 2), ejecuta el comando, verifica si var es mayor que nf, como no lo es entra al bucle, var toma el valor de var + cont (2 + 1 = 3), ejecuta el comando, verifica si var es mayor que nf, como no lo es entra al bucle,var toma el valor de var + cont, ejecuta el comando,verifica si var es mayor que nf, como no lo es entra al bucle, ..., var(4) toma el valor de var + cont (4+1=5), verifica si var es mayor que 5, como es igual, ejecuta de nuevo el comando, pero la siguiente vuelta var sera igual a 6, entonces saldra del bucle.

    Es bueno saber el procedimiento en la mente de un bucle for, porque en otros lenguajes existen otro tipo de bucles, como el while, que es un bucle tambien, pero la verificacion para salir o seguir en el bucle se da despues de haber ejecutado la accion, por lo que en un bucle while siempre se ejecutara una vez la accion, no importa cual se la condicion para salir o seguir en el bucle, bueno pero ese es otro tema, aun asi tenganlo en cuenta .

    La sintaxis es:

    for /L %%variable in (1,1,5) do comando

    Tambien se puede hacer en forma decreciente poniendo como ni el numero mayor, como cont un numero negativo, y como nf el numero menor, ejemplo:

    for /L %%variable in (5,-1,1) do comando

    Por lo que empezara por el 5 hasta llegar al 0 donde se saldra del bucle por ser menor que 1.
    ****************************************************xD*********************************
    Bueno no voy a poner ejemplos practicos porque es hora de dormir, para al rato trabajar, pero manana si me quedan fuerzas pondre un ejemplo practico utilizando los dos tipos de bucle for que mencione junto con el sihuiente comando, salu2 a todos , espero les haya gustado, se que tiene demasiadas explicaciones, pero es para los que nunca han usado un bucle jeje, ciao.
    Última edición por surfman; 25-09-2007 a las 13:40
    Aquello que no ha sido elegido por no nostros no podemos considerarlo ni como merito ni como fracaso.
    Citar  
     

  2. #22  
    Avanzado
    Fecha de ingreso
    Jun 2006
    Mensajes
    1.462
    Descargas
    15
    Uploads
    0
    Joder, vas a dejar mi curso en vergüenza... Por cierto, hablando de mi curso:

    Mañana, abriré un nuevo hilo con él (esta vez sin falta)...

    Y por fin:

    CONSOLADOR.bas, también mañana... (otro hilo nuevo ) Aunque no tiene que ver con este hilo.
    Citar  
     

  3. #23  
    Iniciado
    Fecha de ingreso
    Jul 2007
    Ubicación
    En la playa :)
    Mensajes
    48
    Descargas
    0
    Uploads
    0
    jajaja, La verdad no lo creo, tu tienes mas experiencia que yo, y ademas el tuyo sera mas util para los que ya saben programar en otro lenguaje, ademas de los simbolos > >> * etc... que los exolicas en tu tuto no?, y ademas... el tuyo serviria mas para consulta rapida o de referencia una vez aprendido a programar en batch, por que el mio da hueva leerlo por lo largo del post, bueno aun asi espero lo pongas pronto, porque ahora que estoy estudiando bash, me ha esta quitando mucho tiempo, es muy extenso, y aun no tengo ni idea de hasta donde puedes llegar con una consola en Linux, es muy interesante, bueno, salu2 Nost
    Aquello que no ha sido elegido por no nostros no podemos considerarlo ni como merito ni como fracaso.
    Citar  
     

  4. #24  
    Moderador Global
    Fecha de ingreso
    Aug 2005
    Mensajes
    6.279
    Descargas
    7
    Uploads
    0
    Cita Iniciado por surfman Ver mensaje
    ahora que estoy estudiando bash, me ha esta quitando mucho tiempo, es muy extenso, y aun no tengo ni idea de hasta donde puedes llegar con una consola en Linux, es muy interesante
    Totalmente cierto Muy muy interesante y potente.

    Salu2


    Keep on Rollin'

    . . . . . . . . . . . . . . . . . . . .
    [[ NORMAS DEL FORO ]]
    . . . . . . . . . . . . . . . . . . . .
    __________
    Citar  
     

  5. #25  
    Iniciado
    Fecha de ingreso
    Jul 2007
    Ubicación
    En la playa :)
    Mensajes
    48
    Descargas
    0
    Uploads
    0
    XD***********;:=0()*************XD**************** ***************************************8P*******

    Se me esta complicando esto del bash, asi que tardare algo en poner el minituto en bash, , pero si lo hare, salu2.


    Shift
    Cambia la posición de parámetros por lotes en un archivo por lotes.


    Sintaxis
    shift

    Este comando no utilza parametros `:0 uff jejje, bueno, si hay uno pero esta facil, este comando lo que hace es recorrer el valor de las variables %0 %1 %2, ... y %9, o sea que el valor que tenga %1 lo tamora %0. el valor que tenga %2 lo tomara %1, el valor que tenga %3 lo tomara %2, etc..., una vez aplicado el shift, no habra forma de recuperar el valor de %0, y no se pueden desplazar los parametros en sentido contrario.

    Podemos utilizar la opcion /n, donde n = numero, esto es para desplazar solo ciertos valores, si aplicamos shift /2 desplazaria el %3 a %2, %4 a %3, etc... y dejaria el %0 y %1 con su valor intacto.


    Con solo escribir shift en el programa, las variables se desplazan.



    Call
    Llama a un programa de proceso por lotes desde otro sin detener el programa que hace la llamada. El comando call acepta etiquetas como destino de la llamada. El comando call no tiene efecto en la línea de comandos si no se utiliza dentro de un archivo de comandos o de proceso por lotes.


    Sintaxis
    call [[Unidad:][rutaDeAcceso] nombreDeArchivo [parámetrosProgramaLotes]] [:Etiqueta [Argumentos]]

    Este comando tambien esta facil, hay otras cosas que se pueden hacer con el, por ejemplo combinarlo con las etiquetas goto, pero para eso tienes que habilitar las extensiones de xomando, pero bueno, aqui nada mas voy a explicar el uso basico de call.

    Este comando se utiliza para llamar a otro programa dentro de un programa, por ejemplo, en una parte del programa necesitamos que haga un respaldo, pero ya tenemos un programa anteriormente hecho por nosotros, por lo que podemos llamarlo, imaginemos que se encuentra en la misma carpeta, entonces haremos lo siguiente:

    call respaldo

    Entonces llamaria al programa respaldo, si el programa respaldo necesitara de las variables %0 o %1 o etc..., se las dariamos al igual que cuando inicias cualquier programa, ejem:

    calll respaldo %0 %1
    ejemplo:

    call respaldo "c:/mis documentos" a:/respaldos

    Si el programita que estas llamando se encontrara en otra carpeta, lo unico que harias seria poner la ruta donde seencuentra antes del nombre del programita. Ejemplo:

    call c:/misprogramitas/respaldo
    Listo, creo que ya di los comados para programar en batch, ahora voy a hacer un listado de los archivos mportantes de uindous donde se encuentra informacion importante, para que vean lo que les modifica un virus, y sepan que es lo que les puede hacer, o al menos imaginarse, :P

    salu2
    Última edición por surfman; 25-09-2007 a las 13:45
    Aquello que no ha sido elegido por no nostros no podemos considerarlo ni como merito ni como fracaso.
    Citar  
     

Temas similares

  1. Programa batch
    Por botnet en el foro PROGRAMACION DESKTOP
    Respuestas: 2
    Último mensaje: 17-07-2011, 10:12
  2. Ayuda Batch
    Por pixicato en el foro GENERAL
    Respuestas: 13
    Último mensaje: 27-01-2011, 00:26
  3. Programa batch
    Por botnet en el foro PROGRAMACION DESKTOP
    Respuestas: 6
    Último mensaje: 17-12-2010, 15:25
  4. Batch
    Por Luiss_Garcia en el foro PROGRAMACION DESKTOP
    Respuestas: 5
    Último mensaje: 10-02-2009, 12:54
  5. programacion en batch
    Por dannysalazar en el foro GENERAL
    Respuestas: 12
    Último mensaje: 22-09-2006, 20:40

Marcadores

Marcadores