programacion batch

10

Click here to load reader

Transcript of programacion batch

Page 1: programacion batch

PROGRAMACIÓN BATCH – PROCESAMIENTO POR LOTES

El procesamiento por lotes o programación batch se define como:

“Un archivo de procesamiento por lotes: se trata de archivos de texto sin formato, guardados con la extensión .bat que contienen un conjunto de comandos MS-DOS. Cuando se ejecuta este archivo bat, los comandos contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas. Cualquier comando de MS-DOS puede ser utilizado en un archivo batch.”

Hay que aclarar que batch o procesamiento por lotes no es un lenguaje de programación. Es un archivo de código que contiene comandos del Shell o intérprete de comandos de MS-DOS, que en Windows también puede ejecutarse desde Inicio -> Ejecutar -> cmd.

Hay dos maneras de ejecutar comandos batch. Desde el Shell o intérprete de comandos directamente escribiendo el comando. Escribiéndolos en un archivo de texto con extensión .bat y luego ejecutar dicho archivo.

1) HOLA MUNDO EN BATCH

Comenzaremos creando el clásico "Hola Mundo", escribiendo en un archivo de texto el siguiente código.

Código:@echo offecho Hola Mundopauseexit

Ahora guardemos el archivo como nombre.bat y lo ejecutamos. Nos aparecerá la pantalla que dirá "Hola Mundo", luego una línea abajo dirá "Presione una tecla para continuar".

echo:Imprime un texto en pantalla, que es el texto que viene después (que pasamos como parámetro), que en este caso es "Hola Mundo". Echo significa eco, por lo mismo "@echo off" elimina el eco, la repetición de la ruta en la que nos encontramos en cada línea código.

pause:Como bien se lee, pausa la ejecución del código. Además muestra el texto "Presione una tecla para continuar".

exit:Cierra la ventana de comandos.

Código :@echo offecho Hola, Cuando pulses la tecla se borrará el contenido y cambiará por otro.pauseclsecho ¿Ves?pauseexit

Si quisiéramos averiguar más sobre las funciones, o conocer algunas nuevas por nuestra propia cuenta podemos escribir en el Shell el nombre del comando seguido de /? y aparecerá toda la información necesaria. Podemos poner en práctica esto escribiendo las instrucciones en la línea de comando de MS-DOS.

Para eliminar el eco. echo off

Luego para borrar el contenido de pantalla escribe:

Page 2: programacion batch

cls

Ahora veamos la ayuda de la función copy.copy /?

Cerremos la ventana:exit

Ahora vamos a crear un archivo batch que copie un archivo, luego lo mueva a otro directorio, borre el original y vuelva a copiar el copiado. En la carpeta donde crearás el archivo .bat crea un archivo de texto llamado copiame.txt. En él, escribe lo que quieras. Éste será el archivo que copiaremos.

Código:@echo offecho Hola, copiaremos un archivopausecopy copiame.txt copiado.txtmove copiado.txt C:\copiado.txtdel copiame.txtCD C:\copy copiado.txt copiado2.txtexit

Guárdalo en la carpeta como nombrequetuquieras.bat y ejecútalo. Lo que ha hecho la cadena de instrucciones es más o menos lo siguiente:

1. Primero apagamos el eco, luego imprimimos en pantalla "Hola, copiaremos un archivo".2. Pausamos el intérprete para que no continúe sin nuestro consentimiento.3. A continuación, copiamos el archivo copiame.txt y su copia se llamará copiado.txt. La movemos a la carpeta

raíz del disco C, y eliminamos el original.4. Por ultimo cambiamos de directorio al disco C, copiamos la copia y cerramos el batch.

Después de que ejecutemos el batch, si vamos al disco C:, veremos que hay dos nuevos archivos de texto: uno llamado copiado.txt y otro copiado2.txt. También si vamos a la carpeta del batch, veremos no está el archivo de texto original, copiame.txt.

2) CREACIÓN DE NUEVOS ARCHIVOS.

Con programación batch podemos crear otros archivos. Para ello, tenemos que escribir lo siguiente:

Código:echo TEXTO DE PRIMERA LINEA > nombre.extensiónecho TEXTO SEGUNDA LINEA >> nombre.extensiónecho TEXTO SIGUIENTE LINEA >> nombre.extensión

Al escribir echo seguido de un texto y el signo > creamos un archivo con el nombre que siga. Si ocupamos un echo seguido de un texto y el doble signo > (>>) se escribirá en la siguiente línea vacía del archivo que prosiga.

Código:echo Creando un archivo de texto > nuevo.txtecho Esta es la segunda línea >> nuevo.txtecho Y esta es la siguiente >> nuevo.txtecho Esto está genial >> nuevo.txt

3) PERSONALIZANDO EL SHELL

Page 3: programacion batch

El Shell o intérprete de comandos puede personalizarse de varias formas.

COLOR:Con la función color podemos cambiar los colores de fondo y las letras.COLOR ABDonde A = el color del fondo y B = color de las letras. Para ver todos los colores escribe color /?

TITLE:Para cambiar el título de la barra de tareas hay que escribir:TITLE título

PAUSE PERSONALIZADO:¿No te gusta que al poner pause salga "Presione una tecla para continuar..."? Pues si escribes "pause>nul" no aparecerá ningún texto. Entonces si anteponemos un mensaje, quedaría así.

Código:echo Aprieta cualquier tecla para seguirpause>nul

Además puedes jugar con los caracteres. Aquí un ejemplo, donde se personaliza el pause.

Código:@echo offcolor 30echo ==================================echo =                                =echo =         Personalizado    =echo =                                =echo ==================================echo.echo.echo Esto está personalizado, para salir presiona una tecla.pause>nulexit

Cabe mencionar que echo. (Echo seguido de un punto) sirve para saltarse una línea.

4) MATANDO PROCESOS

¿Alguna vez has presionado CTRL. + ALT + SUPR? Si lo haces, se abre el Administrador de tareas. En la pestaña procesos salen algunos procesos que están ejecutándose en tu PC, haciéndoles click y apretando Terminar proceso, puedes terminarlo. Con programación batch esto es muy fácil, se usa la función: taskkill (no funciona en todos las versiones de MS-DOS, pero para ver si está disponible escribe taskkill /?).

Código:taskkill /f /im proceso.exe

El parámetro /f fuerza el término del proceso.

Código:taskkill /f /im wmplayer.exe

Si lo ejecutas y tienes el reproductor de Windows Media abierto, éste se cerrará.

5) ABRIENDO PROCESOS

Page 4: programacion batch

Ahora abramos ese proceso que cerramos. Para abrir procesos se usa la función start que funciona así: Código:start proceso.exe

También puedes abrir páginas Web con tu explorador predeterminado.

Código:start wmplayer.exe

Se abrirá el reproductor de música

Código:start www.google.com

Se abrirá tu explorador de Internet la página de Google.

6) VARIABLES

Ahora aprendamos a declarar variables. Para crear una se escribe:

Código:set NOMBREVARIABLE = VALOR

Para llamarla debemos escribir su nombre entre los signos %.

Código:@echo offset Nombre= Javier Letelier Ruizecho %Nombre%pause

Para cambiar el valor solo debemos hacer esto:

Código:set Nombre = Nuevo Valor

Si quieres que tu variable sea dinámica, o sea, que el usuario la elija antepones /p:

Código:set /p Nombre = Escriba su Nombre:

Donde el batch se pausara solo mostrando el mensaje que va después de "=" dejando que se escriba algo. También podemos multiplicarlas, sumarlas, etc... con /a.

Código:set numero1=2set numero2=43set /a suma=%numero1% + %numero2%echo %suma%pauseexit

Si ejecutamos este, nos devolverá la suma de 2 + 43, que es 45.

7) USO DE ETIQUETAS

Page 5: programacion batch

Como bien sabemos, la lectura de los archivos tipo batch de una manera lineal, pero existe una forma para que el fichero se salte líneas, o vuelva a ejecutar alguna anterior. Esto se logra con etiquetas y la función GOTO. Para crear una etiqueta solo debemos escribir:

Código::nombreEtiqueta

Dos punto (:) seguido del nombre que le daremos a la etiqueta. De esta manera el GOTO funciona escribiendo GOTO seguido del nombre de la etiqueta, como vemos en el siguiente ejemplo.

Código:@echo offgoto :mietiquetaecho ¿Por que me saltan?:MiEtiquetaecho Hola, ésta es la etiqueta y nos saltamos una parte del código.pause>nulexit

8) CONDICIONALES Y BUCLES

IF Se encarga de comparar cadenas, números o para saber si existen archivos o directorios.

Su sintaxis es: if %cadena1% == %cadena2% orden_a_ejecutar

Se puede leer de la siguiente manera: si cadena1 es igual a cadena2 ejecutamos la orden que hemos escrito. También existe el NOT para ver si no son iguales. Por ejemplo: if not %cadena1%== %cadena2% ejecutar _ acción.

Para saber si un archivo existe, se usa: if exist "nombre _ archivo" accion_a_ejecutar.También para ver si NO existe: if not exist "nombre _ archivo" acción_a_ejecutar.

No sólo se puede utilizar el signo == para hacer comparaciones.

o EQU que es el equivalente a ==.o NEQ sirve para cuando queremos comparar una desigualdad.o LSS Para verificar si el número es menor.o LEQ Para verificar si es menor o igual.o GTR Si es mayor.o GEQ Si es mayor e igual.

Código:if 5 GTR 4 echo Hola

FOR Nos sirve para repetir un comando varias veces, en distintas variables.

Un ejemplo es: for /L %%i IN (0,1,21) DO (echo %%i).

o Aquí /L es para especificar que nuestro for se basara en un contador de números. o Se realiza un echo, que imprimirá números del 0 al 21.o La opción %%i será el nombre de la variable que almacenara los datos.o Con los números in (0,1,21) especificamos que se repetirá del 0 al 21 y de 1 en 1. o Finalmente, do (echo %%i) es la función que se ejecutará en cada repetición del comando. En este caso

un echo que imprimirá la variable.

Otro uso que puede ser aplicado en el FOR es el listado de carpetas o archivos, como veremos a continuación.

Page 6: programacion batch

Listado de archivos

Código:@echo offFOR %%x in (a*) DO echo %%xpause

Este código, listaría todos los archivos que comienzan con A. ¿Por qué? Porque el asterisco (*) es un signo comodín, por lo cual al poner a*, estamos diciendo cualquier archivo que tenga una A delante y luego cualquier cosa. Otro ejemplo del uso de comodín, es listar archivos con extensión común como sería éste:

Código:@echo offFOR %%x in (*.jpg) DO echo %%xpause

Aquí nos estaría listando todos los archivos que tengan la extensión .jpg.

Listado de carpetas

FOR /D %%x in (a*) DO echo %%x

Es casi lo mismo anterior, tan solo que al indicar /D solo se aplica a directorios. Si quisiéramos que se listaran los directorios, juntos a los directorios que tienen estos dentro se ocupa /R.FOR /R /D %%x in (a*) DO echo %%x

Si quisiéramos listar todos los documentos que están dentro de una carpeta contando los que están dentro de carpetas se ocupa solamente /R.FOR /R %%x in (a*) DO echo %%x

9) CREACIÓN DE MENÚS

Ahora veremos cómo crear menús. Comenzaríamos indicando las instrucciones y las opciones, de esta manera:

Código:@echo off:Menúclsecho Seleccione su opción tecleando el numero respectivo.echo.echo 1. Primera Opciónecho 2. Segunda Opciónecho 3. Salir

Luego para seguir ocuparíamos esto:

Código:set /p var=if %var%==1 goto :Primeroif %var%==2 goto :Segundoif %var%==3 goto exitif %var% GTR 3 echo Errorgoto :Menú

Con esto damos una variable en la que se guardara el numero insertado para luego ser verificado por los condicionales, si el numero es mayor que 3 nos avisara que no existe esa opción. También al principio cree una etiqueta para que se pueda volver al menú y un "cls" para limpiar la pantalla. Para terminar creamos las respectivas etiquetas.

Page 7: programacion batch

Código::Primerocls color aEcho Esta es la Primera OpciónEcho Presione una tecla para volver al menúPause>Nulgoto :Menú:Segundocls color 1aEcho Esta es la Segunda OpciónEcho Presione una tecla para volver al menúPause>Nulgoto :Menú

Quedando para terminar nuestro código así:

Código:@echo off:Menúclsecho Seleccione su opción tecleando el numero respectivo.echo.echo 1. Primera Opciónecho 2. Segunda Opciónecho 3. Salirset /p var=if %var%==1 goto :Primeroif %var%==2 goto :Segundoif %var%==3 goto exitif %var% GTR 3 echo Errorgoto :Menú:Primerocls color aEcho Esta es la Primera OpciónEcho Presione una tecla para volver al menúPause>Nulgoto :Menú:Segundocls color 1aEcho Esta es la Segunda OpciónEcho Presione una tecla para volver al menúPause>Nulgoto :Menú

Cada sección tener su color, incluso se puede cambiar la barra de título.

10) APAGADO Y REINICIADO DE PC

Una cosa muy interesante que puede hacerse con la programación batch es apagar y reiniciar tu PC, incluso programarlo para que se apague a la hora que desees. Se ocupa de la siguiente manera el apagado. Su sintaxis es:

shutdown -s -t Tiempo -c "Comentario"

o Donde -s significa que lo apagaremos.o Y -t indica los segundos que tardará en apagarse.o La opción -c hace que se muestre un comentario por pantalla.

Page 8: programacion batch

Puedes cancelar el apagado (antes de que el contador termine) escribiendo shutdown -a bien en un archivo de texto con extensión bat, bien en el mismo intérprete de comandos.

Código:shutdown -s -t 999999 -c "Esto se esta apagando"

Código:shutdown -a

Si en vez de escribir -s usas -r el PC se reiniciara en vez de apagarse. También puedes forzar el cierre de los programas, para que no dé tiempo a guardar nada utilizando la opción -f.

11) LEER ARCHIVOS EXTERNOS

Para leer un archivo externo con batch, como un archivo de texto por ejemplo. Se usa el siguiente código:

Código:type "nombredelarchivo.txt"

12) OTRAS INSTRUCCIONES ÚTILES

Para terminar veremos otras funciones que pueden ser de utilidad.

Msg Esta función tiene varias utilidades, pero la más útil es abrir una alerta con un mensaje. Su utilización es la siguiente:

Código:msg * EsteEsMiMensaje

At Esta opción se utiliza para programar una acción a cierta hora.

Código:At 20:00 msg * Son las ocho de la tarde

Con esto, a las 20:00 nos aparecerá un mensaje que dirá que son las ocho de la tarde. También puedes programar un apagado o cualquier otra acción. Si la hora que das ya pasó, se tomará como la del día siguiente.