Iniciación Batch con código "autodidacta"

Iniciado por ivancea96, 22 Mayo 2013, 16:10 PM

0 Miembros y 1 Visitante están viendo este tema.

ivancea96

Hola a todos.
Vengo a explicarles lo básico de Batch. Además, pongo un código "autodidacta", que se explica por si solo.

Importante: Recomiendo leer el post entero antes de empezar a actuar.

¿Qué es el "BATCH"?
-El batch (archivo de procesamiento por lotes), es un archivo de texto plano, (es decir, sin tamaños de letra, colores, fuentes). Un archivo batch es un archivo con texto. Ese texto son Comandos de "cmd", de "consola de Windows", de "Símbolo del sistema", que, al iniciar el batch (como si fuera un ejecutable), irá "procesando", "ejecutando" esos comandos, en el orden en el que están. Más adelante veréis a que me refiero con más calma.
-Estos comandos, son los mismos que en el Símbolo del sistema. Éste se puede abrir, llendo a Inicio -> Ejecutar, y ahí escribir: cmd. (Solo en Windows)

¿Cómo hago programas en batch?
-Para ello, necesitaremos un editor de texto sencillo, como es el "Wordpad", o el más sencillo a mi parecer, el "Bloc de notas".
-Vamos a cualquier lugar (Escritorio, carpetas...) y creamos un archivo "*.txt" ("*" se pone cuando ahí cabe cualquier palabra, carácter, etc).
-En él, escribiremos el código, más adelante, y le cambiaremos la extensión a "*.bat".
Si no veis las extensiones, al final del post, diré como ponerlas.
-Una vez que se llama "*.bat" (Ej. Hola.bat), habremos hecho que se convierta en el "ejecutable" (no es realmente un ejecutable) que buscamos.

¿Bueno, supongo que queréis empezar no? Pues a ello, que la práctica es más instructiva

Empezemos con el típico "Hola mundo". Lo más fácil que podeis encontrar.
Escribid en el archivo.txt: (También, si se llama "*.bat", le podeis dar a "editar", en vez de a "abrir", y lo abrireis como si fuera un "*.txt")

echo Hola mundo
pause


Lo más sencillo que podeis encontraros. Probadlo. Extensión .bat, y le dais a abrir. ¿Está? Pues ya sabeis que hace la primitiva "echo", y la "pause".
Lo metemos un par de cosas, que creo que fácilmente entenderéis, tras probarlo:

@echo off
echo Hola mundo
pause > nul


El "@echo off" hace que no se muestre toda la línea de dirección, ni los comandos.
Ahora os pongo algo parecido, pero que solo funciona en algunos Windows. ¿Porqué? La línea de comandos, al ir quedando en desusos, se le fueron quitando algunas primitivas y funciones.

@echo off
msg * Hola a todos


Si no os funciona, revisadlo siempre. Pero en este caso, es muy probable que no funciona. En mi Windows 7, por ejemplo, no tenía esta primitiva. (Se pueden descargar e nstalar, pero no viene al caso)

Ahora os pongo 2 comandos nuevos. Nota: Podéis probar los comandos en el "cmd", así no teneis que cambiar constantemente el .txt. De hecho, si ponéis el comando + "/?" (Quedaría Echo /?), os mostrará la ayuda de el comando, y sus parámetros.

@echo off
goto segundo
echo Hola
pause
exit
:segundo
echo Adios ;)
pause
exit



@echo off
echo Hola
pause>nul
cls
echo Hola otra vez :O!
pause>nul


"Cls" borra la pantalla, y "goto nombre" va a una "etiqueta" (:nombre)

Bueno, ahora os pongo el código, que explica un par de cosas más. Os recomiendo poner "help" en el cmd para ver muchos más comandos.


@echo off
:: esto sirve para que no se muestren las lineas de comando en la ventana del ms-dos.
:: los :: sirven para anotar algo que no quieres que se muestre, como por ejemplo, estas explicaciones que estoy dejando. Se puede poner :: o rem.
echo Hola!!
:: echo ??? sirve para poner un mensaje que se mostrara en la ventana.
echo.
:: echo. sirve para dejar una linea en blanco.
pause
:: al poner pause, el usuario deberá pulsar una tecla para continuar con los comandos, y aparecerá el mensaje que pongas delante (pause el-mensaje) o, por defecto, pulse una tecla para continuar. También se puede poner pause >nul, para que no muestre ningún mensaje (el problema es que el usuario no va a saber que hacer, a no ser que lo especifiques antes, con echo;, por ejemplo.
:1
:: al poner :-algo- (-algo- en este caso es 1) creas una zona, de tal modo que si en algún momento del código, antes o despues de esa zona, pones goto -algo;, el comando volverá a esa zona, repitiendo, o saltando parte del código.
cls
:: el comando cls deja en blanco todo lo que había en la ventana, mensajes, etz.
echo elige que deseas hacer: (pon el número)
echo 1) Apagar, reiniciar.
echo 2) Salir.
echo.
echo.
echo.
set /p numero=Numero que hallas elejido:
:: el comando set; con el parámetro ;/p; crea una variable, donde "numero"; es el nombre de la variable (lo que va después de /p). Lo que hay despues del = es un mensaje, delante del cual el usuario escribirá lo que desée que sea la variable.
if %numero%==1 goto 2
if %numero%==2 goto salir
:: los comandos if %variable%== sirven para decir: si la variable %variable% (siempre entre %x%) es igual a X, iniciar X comando, goto, en este caso.
cls
echo Por favor, poner 1 o 2, según lo que desé.
pause pulse una tecla para volver al menu inicial.
goto 1
:: aquí el comando goto que nos enviará a la "zona" llamada 1.
:salir
exit
:: el comando exit cierra la ventana.
:2
:: otra zona más.
cls
echo apagar (a) o reiniciar (r)?
set /p ar=Letra:
if %ar%==a goto apagar
if %ar%==r goto reiniciar
cls
echo por favor, elija "a" o "r".
pause
goto 2
:: por supuesto, pueden ser colocados todos los goto que se quieran para ir a la misma zona.
:apagar
cls
echo quiere apagar en X tiempo (t) o directamente (d)?
set /p apagar2=Letra:
if %apagar2%==t goto apagart
if %apagar2%==d goto apagard
cls
echo Por favor, elija una de las opciones.
pause
goto apagar
:apagart
cls
echo bien, especifique el tiempo en segundos en que quiera apagar (máx. 600 min. 1) y prepárese.
set /p tiempoapagar=Tiempo:
shutdown -s -t %tiempoapagar%
:: shutdown sirve para apagar (-s), reiniciar (-r), hibernar, etz. tambien se puede poner variables en partes de los comandos. Si ponemos -t # podremos especificar el tiempo en segundos en que se apagará/reiniciará/etz.
exit
:apagard
echo preparese.
pause pulse una tecla para apagar.
shutdown -s -t 1
:: aunque pongo directamente, pongo -t 1 porque hay versiones de sistemas operativos que, si no pones tiempo o hora (también se puede poner la hora a la que hacer shutdown), pone 30 segundos.
exit
:reiniciar
cls
echo quiere reiniciar en X tiempo (t) o directamente (d)?
set /p reiniciar2=Letra:
if %reiniciar2%==t goto reiniciart
if %reiniciar2%==d goto reiniciard
cls
echo Por favor, elija una de las opciones.
pause
goto reiniciar
:reiniciart
cls
echo bien, especifique el tiempo en segundos en que quiera reiniciar (máx. 600 min. 1) y prepárese.
set /p tiemporeiniciar=Tiempo:
shutdown -r -t %tiemporeiniciar%
exit
:reiniciard
echo preparese.
pause pulse una tecla para reiniciar.
shutdown -r -t 1
exit



2º código:


Siempre al principio de un programa mejor:


@echo off
:iniciocontraseña
:: como este código será para poner una contraseña al principio de un código batch, el nombre de esta etiqueta deberá ser algo complejo, para evitar futuros contratiempos
echo Por favor, ponga la contraseña:
echo.
set /p contraseñaprincipio=Contraseña:
:: y el nombre de la variable más complejo aun.
if %contraseñaprincipio%==lacontraseñaquetuquieras goto inicio
cls
echo CONTRASEÑA INCORRECTA
echo vuelva a intentarlo
pausa
goto iniciocontraseña
:inicio
cls
::código cualquiera



Bueno, decir que estos 2 códigos los tengo desde hace mucho, y no los cambié demasiado, por lo que quizás use una terminología diferente en cada uno. No problema. Si lo entendéis, bien. Si no, decidme que no entendéis, o que os gustaría saber, y os contaré.

Aviso: No voy a dar códigos. Os enseñaré a hacerlos si pidiéseis, pero nada más.

Cabe decir, que el Batch NO es un lenguaje de programación. No confundir.
A mi me sirvió mucho el batch para entender las bases de laq programación. Pero mi consejo es que no os estanquéis en el Batch los que queráis progresar en la programación.

Suerte a todos los que estéis con ello :D

XresH

No manejo batch pero parece tener buena pinta lo que comentaste, gracias se deberia decir :D

a ver si los entendidos comentan algo.

Saludos.
[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<

Eleкtro

Cita de: ivancea96 en 22 Mayo 2013, 16:10 PMCabe decir, que el Batch NO es un lenguaje de programación. No confundir.

Cita de: XresH en 22 Mayo 2013, 23:32 PMa ver si los entendidos comentan algo.

Pues yo sobre los códigos no tengo nada que decir, son muy sencillos/básicos, eso es lo que es y a alguien le servirá, pero...
...¿Si no consideras Batch como un lenguaje de programación, porque lo psoteas en el subforo de programación?  :xD

-> Scripting

Saludos!








ivancea96

Cita de: EleKtro H@cker en 23 Mayo 2013, 01:06 AM
...¿Si no consideras Batch como un lenguaje de programación, porque lo psoteas en el subforo de programación?  :xD

La verdad, no sabía donde ponerlo, y bueno, a mi me pareció una buena iniciación a la programación. (Así empezé yo) Y la verdad nunca supe exactamente que es el Scripting xD
Si un moderador lo ve mejor ahí, que lo haga claro :o

Cita de: EleKtro H@cker en 23 Mayo 2013, 01:06 AM
Pues yo sobre los códigos no tengo nada que decir, son muy sencillos/básicos, eso es lo que es y a alguien le servirá, pero...

Cierto, pero esto lo oriento a gente que quiera empezar. A mi parecer, si le gusta en general, querrá seguir aprendiendo programación. (Esto es lo que me motivó a mi xD)

Cita de: XresH en 22 Mayo 2013, 23:32 PM
No manejo batch pero parece tener buena pinta lo que comentaste, gracias se deberia decir :D

Pues si quieres, esto va dirigido para ti! xD
No se si eres nuevo en programación, o simplemente no manejas Batch. En cualquier caso, lo veo como un medio "rápido" para escribir un programa sencillo. Ejemplo: Desde el programador de cierre, que ahí está, o yo hice un programa para cambiar el "realmlist" del WoW entre servers, etc. (Esto último sabrán a lo que me refiero quién haya jugado al WoW xD)

En definitiva, gracias a todos :D

Eleкtro

#4
Cita de: ivancea96 en 23 Mayo 2013, 18:24 PMla verdad nunca supe exactamente que es el Scripting xD
Pues no te costaba nada buscar en la Wikipedia para salir de dudas (Me refiero a cuando te introduciste a la programación), luego pasan estas confusiones de no saber donde postear las cosas
:silbar:.

Aunque Batch es... bueno, Batch es Batch, la oveja negra del Scripting, y ya está xD, yo también me confundiría si postear un tema de Batch en "Scripting" o en "Basura" :xD.




El Scripting se refiere a lenguajes de programación interpretados, es decir, lenguajes que requieren un intérprete para su procesamiento, ejemplos:

"Script.bat" <>  cmd.exe
"Script.vbs" <>  Wscript.exe
"Script.rb"  <>  Ruby.exe


Sin el intérprete no puedes hacer nada porque no están compilados, y no pueden ser compilados.

...Luego están los lenguajes compilados, que no necesitan intérprete porque se traducen por si mismos desde el código fuente.

PD: Esto lo he explicado de manera rápida, Wikipedia lo explica mejor que yo si quieres informarte.

Saludos!








XresH

No soy nuevo ya manejo otros lenguajes, solo que batch jamas lo vi en profundidad solo de manera superficial.

Tal vez si este mal colocado el post pero de todas formas vale la intención :P

Comparto lo que dice electro porque al no poder compilarlo dependen de un intérprete, cosas que los lengujesss convencionales No.

Por otra parte pienso que es una buena manera de iniciarze, yo lo veo bien, basico, prolijo a tu "Manual" (por así decirlo)  y lo mas importante es que lo entiendo, pero al ya manejar otros lenguajes eso me lo debe facilitar, los nuevos deberían opinar y saber cual es realmente el resultado.


Saludos.

[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<

ivancea96

Cita de: EleKtro H@cker en 23 Mayo 2013, 19:42 PM
Pues no te costaba nada buscar en la Wikipedia para salir de dudas (Me refiero a cuando te introduciste a la programación), luego pasan estas confusiones de no saber donde postear las cosas.
...
El Scripting se refiere a lenguajes de programación interpretados, es decir, lenguajes que requieren un intérprete para su procesamiento, ejemplos:

Pues bueno, es bueno saberlo xD. Aunque tienes razón, creo que aquí tampoco hace mal, ya que podría ayudar a nuevos a programar :O (y como este foro es más transitado, me sube visitas :D(no))