epelpad

Batch para principiantes

Aqui aprenderemos lo basico del Batch, si ya teneis experiencia no lo leais porque no os aportara nada nuevo

Pasos

Lo primero es ¿Donde creo que batch?
Muy facil pulsa windows+r y escribes "notepad.exe" y ya lo tienes

Una vez estemos aqui empezaremos a escribir comandos para realizar los batch.



@echo off
esto es lo primero que debemos poner para realizar un batch, sin esto no haremos nada

Se escribe sin mayusculas y con los espacios*

echo

Hay 2 tipos de echo, el que se escribe con "." y el que va solo Ej

Tipo 1
Código:

echo Hola


Tipo 2
Código:

echo.


Aplicacion del 1er echo (sin punto):
Se usa para decir mensajes que saldran en la pantalla una vez abierto el batch

Ej:
Código:

@echo off
echo Hola ¿que tal estas?
pause


En este caso abririas el Batch y sadria "Hola ¿que tal estas?"

Aplicacion del 2º echo (con punto):

Su aplicacion no suele ser obligatoria, solo se usa para que salga un espacio entre frase y frase
(se pueden poner todos lo que quieras)

Ej:
Código:

@echo off
echo hola ¿que tal estas
echo.
echo yo estoy muy bien
pause


En este caso el programa te diria:
hola ¿que tal estas?
~se quedaria una linea libre
yo estoy muy bien


"pause" y "pause > nul"

El comando "pause" se usa para que cuando habras el programa tengas que pulsar enter para continuar

Ej:
Código:

@echo off
echo Hola ¿que tal estas?
pause
echo Yo estoy muy bien
pause


En este caso el programa haria:

Hola ¿que tal estas?
(el "lector" pulsaria enter y saldria lo siguiente)
Yo estoy muy bien

¿Cual es la diferencia entre "pause" y "pause > nul"?
Los dos sirven para lo mismo, la unica diferencia es que si escribes solo "pause" cuando habras el programa y te dira:
Hola ¿que tal estas?
Presione una tecla para continuar..... . (y cuando pulsas sale la siguiente frase)
Yo estoy muy bien

En cambio con el pause > nul evitas que te salga "Presione una tecla para continuar...."
Esto sirve simplemente para que quede mas bonito

"exit"
Se coloca al final del texto para que se cierre automaticament e

ATENCION
El "exit se coloca solo despues del "pause" porque si no el programa se cerrara antes de que podamos ver la ultima frase

Lo que NO se debe hacer
Código:

@echo off
echo Hola ¿que tal estas?
exit


Si haces esto no podras leer el "Hola ¿que tal estas?" porque se cerrara antes.

Lo que SI se debe hacer:
Código:

@echo off
echo Hola ¿que tal estas?
pause > nul
exit


En este caso el programa de cerrara solo cuando pulses enter



Hasta aqui lo sencillo y basico, ahora empezaremos a complicarlo un poquito:



Como habeis podido imaginar un programa que solo te diga cosas es un poco sencillo y aburrido, ahora veremos mas variantes con las que tendremos mas cantidad de opciones:

Las variables
Una variable es como una pequeña memoria que utilizamos para referirnos a lo mismo mas adelante

(a partir de ahora todo lo que este puesto en los recuadros blancos copialo y guardalo para probarlo)
Lo 1º y antes de que se me olvide es como guardar los textos en batch, muy facil, pulsas archivo> guardar como y escribes el nombre que tu quieras terminado en .bat Ej: Algo.bat Y ya lo tienes.

Las variables se usan para que la persona que habra el batch tenga que responder preguntas y lo que responda se repita despues:

Hay varios tipos, los mas importantes son
set ~*=
set/a ~*=
set/p ~*=

*
Primero debemos saber como hacer que se repita y desde donde
Cuando pones "set/ set/a/ set/p" hay que poner a continuacion un codigo de letras (no importa que tipo de codigo sea ni cuanto ocupe, simplemente debemos saber que tiene que ser con letras normales)

Para que lo entendamos mas facil. Imaginemos que ponemos "set algo= hola" el "algo" se usa para referirse a hola, si por ejemplo quieres decir mas tarde "hola" pudes escribir o la palabra normal o %algo%.
Cuando pones "algo" entre signos del tanto porciento el programa pondra lo que esta escrito despues del igual y en esa misma linea (las lineas del bloc de notas pueden ser infinitas).

Ej: (no te olvides de copiar, pegar y probar)
Código:

@echo off
set yec=soy listo
echo yo %yec%
pause > nul
exit


Ahora que lo has comprovado seguro que lo has entendido

El "set" solo sirve para repetir un dato que nosotros hallamos hecho, en cambio "set/a" y "set/p" tienen mejores aplicaciones.

set/a & set/p
Aqui los comandos bajo mi punto de vista mas utiles para los batch y son sencillos si los pruebas y entiendes bien.

la funcion de "set/p" es permitir a la persona que lee el batch que responda algo a una pregunta que tu le haces, asi de sencillo, se escribe asi:
set/p lol= ¿como te llamas? (tanto el "lol" o la pregunta se pueden sustituir sin que cambie nada)
A la persona que lo lee le saldra
¿como te llamas?
a lo que yo responderia Ilcon14 y pulsaria enter y en ese momento el programa ha guardado Ilcon14 y en el momento que escribas por ejemplo
echo te llamas %lol%
saldra en vez de %lol% Ilcon14, asi de sencillo, para que lo entendais mejor os pongo un ejemplo

Ej:
Código:

@echo off
set/p nombre= ¿como te llamas?
echo.
pause > nul
echo.
cls
set/p edad= ¿y cuantos años tienes?
echo.
pause > nul
echo.
cls
set/p vive= ¿y donde vives?
echo.
pause > nul
cls
echo te llamas %nombre% y tienes %edad% años y vives en %vive%
echo.
pause > nul
exit


Una vez lo comprobeis vereis lo sencillo que es

La funcion de set/a es sumar/ restar/ multiplicar/ dividir/ elevar un numero que haya sido contestado a una pregunta anteriormente.
Si pones:
set/p trak= ¿cuanto sacaste en ingles?
set/a suma= %trak%+1
echo pues yo saque un punto mas que tu, un %suma%

A la respuesta se le suma uno, no importa el numero que sea.

Ej:
Código:

@echo off
title Nota
set/p nota= ¿cuanto sacaste en ingles?
echo.
pause > nul
echo.
echo ¿Solo????
echo.
echo.
echo jajaja
pause > nul
echo.
echo.
echo Hay que ser un poco retrasao para sacar un %nota%
echo.
echo.
set/a suma= %nota%+100
echo.
echo.
set/a rec= %nota%+50
echo De hecho, Yo saque cien puntos mas que tu; un %rec%
echo.
pause > nul
echo.A no eso son 50 puntos mas perdon, he sacado un %suma%
echo.
echo JAJA
pause > nul
exit


¿Habeis visto que sencillo? Si os parece dificil practicar y practicar hasta que lo asimileis.

Los comandos de suma, resta, etc.. son:
Suma: +
Resta: -
Multiplicacion: *
Division: /
Exponente: ^

Atención
Si aun no entiendes esto te recomiendo que no te leas lo siguiente porque no se puede hacer si no comprendes el set/p (el set/a no hace falta)




Colores, If & Goto

Lo primero que debemos saber esque los colores son algo opcional y que solo sirven para decorar o cambiar es aspecto segun la situacion
Cambia el color de la letra con la que escribimos y de el fondo (ten cuidado de que no coincidan la letra y el fondo)
Para activar el color se pone
color (y la letra y en numero del codigo de colores)

Codigo de colores:
0 = Negro
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Púrpura
6 = Amarillo
7 = Blanco
8 = Gris
9 = Azul claro
A = Verde claro
B = Aguamarina claro
C = Rojo claro
D = Púrpura claro
E = Amarillo claro
F = Blanco brillante

If & goto
Los comandos if y goto son muy, muy, muy utiles para la programacion batch, os pongo un ejemplo y os voy explicando

@echo off
echo Hola bienvenido
pause >
set/p ink= ¿quieres aprender sobre programacion batch?
rem Supongo que ya sabeis para que sirve el set/p y si no volver a leer arriba
rem ahora llega lo nuevo
If %ink%== si goto lol
If %ink%== no goto non
rem aunque parezca muy dificil no os agobieis ahora explico los pasos
:non
echo pues entonces que haces leyendo esto?¿
pause > nul
exit
:lol
echo entonces sigue leyendo XD
pause > nul
exit

Bien una vez que copieis, pegueis y probeis esto segir leyendo.
Como podeis comprobar si a la pregunta contestas si te dice "entonces sigue leyendo XD"
Y en cambio si a la pregunta contestas que no te dice "pues entonces que haces leyendo esto?¿

Antes de seguir explicando os dire que "if" es en ingles "si" y "goto" se refiere a "go to" que es "ir a".
Una vez sepamos esto os explicare:
set/p eee= ¿quieres tener 100 €?
Espero que que hasta aqui lo entendais, si luego pones %eee% te sale la contestacion.
Ahora llega lo nuevo, os podre los algoritmos y luego os lo explicare con los algoritmos:
If %eee%== si goto tec
Si %eee% es igual a "si" ir al tec, y tec se traduce por :tec
If %eee%== no goto tac
Si %eee% es igual a "no" ir a tac, que se traduce por :tac
Luego os preguntareis ¿como vamos a tec y tac?, muy facil se pone un otra linea
:tec
y a continuacion lo que queremos que pase si contestamos que si
Ej:
:tec
echo entonces ponte a trabjar y los conseguiras XD
pause > nul
exit
:tac
y ponemos lo que queremos que pase si contestamos que no
Ej:
:tac
echo pues te los iba ha regalar, pero como eres un incredulo pues nada
pause > nul
exit

Podeis poner todos los codigos de letras que querais y lo largo que querais, no os olvideis de unas cosas:
El "If" siempre con la /i/ mayuscula,
Despues de set/p (el codigo) solo un signo de =, pero despues del If %lo que sea% 2 signos de =.

Bueno, pues ya hemos terminado, espero que lo hayais entendido y que sepais que esto es solo una pequeña parte de la programacion batch, hay mucho mas.

Antes de despedirme un Batch que engloba todo lo que hemos hecho hasta ahora.

Código:

@echo off
title Gustos deportivos
color 0f
echo.
echo Hola ahora te are un cuestionario dependiendo de lo que respondas hare unas preguntas u otras
echo.
pause > nul
set/p yet= ¿Te guste el futbol? (si o no)=
If %yet%== si goto led
If %yet%== no goto rom
:led
cls
echo enserio, a mi tambien me parece un juego muy divertido y creativo
echo.
pause > nul
set/p lol= ¿Te gusta el baloncesto?(si o no)=
If %lol%== si goto ink
If %lol%== no goto rom
:ink
cls
echo asique te gusta de todo, tambien el baloncesto, eso esta bien
echo.
pause > nul
echo.
set/p lady= ¿Te gusta el tenis?(si o no)=
If %lady%== si goto exe
If %lady%== no goto dream
:exe
cls
echo Muy bien, alguien con bastante variedad, eso me gusta, muchas gracias
pause > nul
exit
:rom
cls
echo no te gusta? que pena a mi si, bueno cuestion de gustos
echo.
pause > nul
set/p xd= ¿te gusta el balonmano? (si o no)=
If %xd%== si goto tel
If %xd%== no goto love
:dream
cls
echo Bueno no te podia gustar todo, muchas gracias
echo.
pause > nul
exit
:tel
cls
echo a mi tambien es muy entretenido y se marcan muchos goles
echo.
pause > nul
set/p all= ¿te gusta el ping-pong? (si o no)
If %all%== si goto fin
If %all%== no goto til
:fin
cls
echo Este si que es entretenido y rapido como el que mas, gracias
echo.
pause > nul
exit
:til
cls
echo Pues para mi es el mejor de todos y ademas se me da genial
echo.
pause>nul
exit
:love
cls
echo Para mi no es el mejor pero si me gusta
echo.
pause > nul
set/p gaga= ¿Te gusta el golf? (si o no)
If %gaga%== si goto rey
If %gaga%== no goto hall
:rey
cls
echo a mi no me gusta mucho, me parece un tanto aburrido gracias
echo.
pause > nul
exit
:hall
cls
echo no te gusta casi nada eh
echo.
pause > nul
exit

-----------------------------------------------------------------------------------------
Aqui lo teneis

.:juanjoeljas:.

Batch para principiantes

4 comentarios - Batch para principiantes

juanjo_pais -2
che y esto para que sirve????

para la gente que esta aburrida y no tiene contactos en el msn?
juanjoeljas
siip jajjjajja
rolosoftpy +1
juanjo_pais dijo:che y esto para que sirve????

para la gente que esta aburrida y no tiene contactos en el msn?

para la gente que quiere progresar en la vida tal vez ¬¬
Gai_Sensei
Que bien JuanJoelJas, Gracias por el tuto, claro y facil de entender