Anda di halaman 1dari 18

PROGRAMACIN BSICA EN BATCH (.

BAT)

Batch segn Wikipedia: "Es un archivo de procesamiento por lotes: se trata de archivos de texto sin formato, guardados con la extensin *.bat que contienen un conjunto de comandos DOS. Cuando se ejecuta este archivo bat, los comandos contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas. Cualquier comando DOS puede ser utilizado en un archivo batch." Hay que aclarar que Batch no es un Lenguaje de Programacin. Es un archivo de cdigo que contiene comandos del Shell de Windows, llamado MS-DOS, que pueden ejecutar desde: Inicio->Ejecutar->CMD. Hay dos maneras de ejecutar comandos Batch. Desde el Shell de Windows. Escribindolos en un archivo de texto con extensin .bat y luego ejecutarlo.

1- Comenzaremos creando un Simple y clsico "Hola Mundo", escribiendo en un archivo de texto el siguiente cdigo. Cdigo: @echo off echo Hola Mundo pause exit

Ahora guardemos el archivo como Nombre.bat y lo ejecutamos. Nos aparecer una pantalla negra que dir "Hola Mundo", luego una lnea abajo dir "Presione una tecla para continuar" Explicacin: echo: Imprime un texto en pantalla, que es el texto que viene despus (el que le pasamos como parmetro), que en este caso es "Hola Mundo". Echo significa eco, por lo mismo "@echo off" elimina el eco, la repeticin de la ruta en la que nos encontramos en cada lnea cdigo.

pause:

Como bien se lee, pausa la ejecucin del cdigo. Adems muestra el texto "Presione una tecla para continuar"

exit: Cierra la ventana de comandos.

Para dejar ms en claro cul sera la diferencia de no ocupar la lnea @echo off la imagen de a continuacin muestra como se vera la pantalla sin esta lnea.

Ahora aprenderemos algunas funciones de Batch:

CD o CHDIR: Si has trabajado en PHP, te ser fcil entender este concepto. Sirve para cambiar de Directorio o Mostrar el nombre del actual. Para usarlo, CD o CHDIR seguido de la ubicacin del directorio al cual nos moveremos. cd "C:" chdir "C:" Los ejemplos anteriores hacen exactamente lo mismo, cambian al Disco C

COPY: Sirve para copiar uno o ms archivos a otro destino. Su sintaxis es la siguiente: Copy "Direccin del archivo" "Nueva direccin" Ejemplos: Cdigo : Copy "C:archivo.txt" "C:archivo2.txt" Aqu copiaramos un archivo del Disco C llamado "archivo.txt" como "archivo2.txt" Para acortar un poco podramos usar: Cdigo : cd "C:" Copy "archivo.txt" "archivo2.txt" Donde primero cambiamos de directorio al Disco C con cd "C:" y luego al copiar no tenemos que especificar que est en el Disco C ya que ya nos encontramos en l.

DEL: Sirve para eliminar uno o ms archivos. Su sintaxis es: Del "ARCHIVO" Tambin se puede aadir: del /f /q "archivo" Donde no pide confirmacin de eliminacin (/q) y fuerza al archivo a borrarse (/f)

Move: Sirve para mover un archivo. Su sintaxis es: Move "Direccin Archivo" "Nueva Direccin"

Cls: Sirve para limpiar el contenido de la pantalla: Ejemplo:

Cdigo: @echo off echo Hola, Cuando pulses la tecla se borrara el contenido y cambiara por otro. pause cls echo Ves? pause exit

Si quisiramos averiguar ms 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 informacin necesaria. Podemos poner en prctica esto de la siguiente manera: 1) Abramos el Shell de windows: Inicio->Ejecutar->CMD 2) Una vez abierto escribamos: echo off Para eliminar el eco. 3) Luego para borrar el contenido de pantalla escribe: cls 4) Ahora veamos la ayuda de la funcin Copy escribiendo esto: copy /? 5) Cerremos la ventana: exit

Ahora vamos a crear un Batch que copie un archivo, luego lo mueva a otro directorio, borre el original y vuelva a copiar el copiado. En la carpeta donde crears el archivo .bat crea un archivo de texto llamado copiame.txt. En l, escribe lo que quieras. Este ser el archivo que copiaremos. Ahora el Batch:

Cdigo : @echo off echo Hola, Copiaremos un archivo pause copy "copiame.txt" "copiado.txt" move "copiado.txt" "C:copiado.txt" del "copiame.txt" cd "C:" copy "copiado.txt" "copiado2.txt" exit Gurdalo en la carpeta como ElNombreQueTuQuieras.bat, y ejectalo. Lo que ha hecho la cadena de instrucciones es ms o menos lo siguiente: Primero apagamos el eco, luego imprimimos en pantalla "Hola, Copiaremos un archivo" Pausamos el intrprete para que no siga de largo. A continuacin, copiamos el archivo "Copiame.txt" y su copia se llamar "copiado.txt". La movemos a la carpeta raz del disco C, y eliminamos el original. Por ultimo cambiamos de directorio al disco C, copiamos la copia y cerramos el Batch. Despus 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. Tambin si vamos a la carpeta del Batch, veremos no est el archivo de texto original, "copiame.txt".

Creacin de Nuevos Archivos Con Batch podemos crear otros archivos. Para ello, tenemos que escribir algo como esto: Cdigo : echo TEXTO DE PRIMERA LINEA > nombre.extensin echo TEXTO SEGUNDA LINEA >> nombre.extensin echo TEXTO SIGUIENTE LINEA >> nombre.extensin

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 linea vaca

del archivo que prosiga. Hagamos la prueba: Cdigo : echo Creando un Archivo de texto > nuevo.txt echo Esta es la Segunda linea >> nuevo.txt echo Y esta es la Siguiente >> nuevo.txt echo Esto esta genial >> nuevo.txt

Si ejecutamos eso, la pantalla negra se abrir y cerrar. Pero en la carpeta en la que est nuestro batch se abra creado un nuevo archivo "nuevo.txt" que si lo abrimos, dentro estar escrito lo que especificamos.

Personalizando el Shell Seguro que no te gusta mucho el aspecto del Shell. Aqu veremos como personalizarlo un poco.

COLOR: Con la funcin color podemos cambiar los colores de fondo y las letras. Siendo su sintaxis: COLOR AB Donde A= El color de el Fondo y B= Color de las letras. Para ver todos los colores ve el MS-Dos y escribe color/?

TITLE: Para cambiar el ttulo de la barra de tareas solo escribe: Title Loquequierascomotitulo

Pause Personalizado: No te gusta que al poner pause salga "Presione una tecla para continuar..."? Pues si escribes "pause>nul" no aparecer ni un texto. Entonces si anteponemos un mensaje, quedara as. Cdigo : echo Aprieta cualquier tecla para seguir pause>nul

Adems puedes jugar con los caracteres. Aqu un ejemplo, donde cambi los colores y jugu con los caracteres y personalic el pause:

Cdigo :

@echo off color 30 echo ================================== echo = = echo = Personalizado = echo = = echo ================================== echo. echo. echo Esto esta personalizado, para salir presiona una tecla. pause>nul exit

Casi me olvido de mencionar que echo. (Echo seguido de un punto)sirve para saltarse una lnea.

Matando Procesos Alguna vez has presionado CTRL+ALT+DELETE? Si lo haces se abre el Administrador de tarea. En la pestaa procesos salen algunos procesos que estn andando en tu pc, hacindoles clics y apretando "terminar proceso" lo puedes acabar. Con batch eso es muy fcil, se usa la funcin: Taskkill (No funciona en todos los pc, para ver si esta disponible escribe taskkill/?). Su sintaxis es: Cdigo:

taskkill /f /im proceso.exe

/f Fuerza el trmino del proceso. Un ejemplo (no recomendable ejecutarlo antes de ver lo que hace) seria escribir. Cdigo: taskkill /f /im wmplayer.exe Si lo ejecutas y tienes el Reproductor de Windows Media abierto, este se cerrar.

Abriendo Procesos Ahora abramos ese proceso que cerramos. Para abrir procesos se usa la funcin Start que funciona as: Cdigo: start proceso.exe Tambin puedes abrir paginas web con tu explorador predeterminado. Ejemplo 1: Cdigo: start wmplayer.exe Se abrir el Reproductor de Msica Ejemplo2: Cdigo: start www.google.cl Se abrir tu Explorador de Internet en Google.

Variables Ahora aprendamos a declarar variables. Para crear una se escribe: Cdigo : set NOMBREVARIABLE = VALOR Para llamarla debemos escribir su nombre entre los signos %% Ejemplo: Cdigo : @echo off set Nombre= Javier Letelier Ruiz echo %Nombre% pause La pantalla nos mostrara algo as:

Para cambiar el valor solo debemos hacer esto: Cdigo : set Nombre= Nuevo Valor Si quieres que tu Variable sea dinmica, sea que el Usuario la elija antepones /p: Cdigo : set /p Nombre=Escriba su Nombre: Donde el Batch se pausara solo mostrando el Mensaje que va luego de "=" dejando que se escriba algo. Tambin podemos multiplicarlas, sumarlas, etc... con /a:

Cdigo: set numero1=2 ser numero2=43 set /a suma= %numero1% + %numero2% echo %suma% pause exit

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

************************************ ****************************** *************** A continuacin veremos los siguientes temas: Uso de etiquetas Condicionales Creacin de Mens Apagado y Reiniciado de Pc Leer archivos externos Insertar al Registro Otras cosas tiles

Uso de Etiquetas Como bien sabemos la lectura de los cdigos Batch se leen de una manera lineal, pero existe una forma para que el Batch se salte lneas, o vuelva a alguna anterior. Esto se logra con Etiquetas y la funcin GOTO. Para crear una etiqueta solo debemos escribir:

Cdigo:

:nombreEtiqueta Dos puntos ( : ) 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. Cdigo: @echo off goto :mietiqueta echo Por que me saltan? :MiEtiqueta echo Hola, esta es la etiqueta y nos saltamos una parte del codigo. pause>nul exit Condicionales El primer condicional que veremos es el ms usado. IF: Se puede ocupar para comparar, cadenas, nmeros o para saber si existen archivos. Ejemplo de sintaxis, if %cadena1% == %cadena2% OrdenAEjecutar Que se podra leer de la siguiente manera. Si cadena1 es igual a Cadena2 ejecutemos la Orden OrdenAEjecutar. Tambin existe el IF NOT para ver si no son iguales. if not %cadena1%== %cadena2% ejecutarAccion Para saber si un archivo existe, se usa: IF EXIST if exist "NombreDelArchivo" AccionAEjecutar o tambin para ver si no existe usamos: IF NOT EXIST if not exist "NombreDelArchivo" AccionAEjecutar No solo se puede ocupar el signo == para hacer comparaciones. EQU, que es el equivalente a ==

NEQ, Sirve para cuando queremos ver Desigualdad. LSS, Para verificar si el numero es Menor LEQ, Para verificar si es menor o igual. GTR, Si es mayor GEQ, Si es Mayor e igual. Un ejemplo de esto sera:

Cdigo: if 5 GTR 4 echo Hola

FOR: Nos sirve para repetir un comando varias veces, en distintas variables. Un ejemplo, es este: for /L %%i IN (0,1,21) DO (echo %%i) En donde /L es para especificar que nuestro for se basara en un conteo de nmeros. Aqu se repetir un Echo, que imprimir nmeros del 0 al 21. %%i sera el nombre de la variable que almacenara datos in (0,1,21) aqu especificamos que se repetir del 0 al 1 y del 1 al 21. do (echo %%i) Esto es la funcin que se ejecutara en cada repeticin del comando, en este caso un echo que imprimir la variable. IMPORTANTE: Batch en algunos casos SI reconoce entre maysculas y minsculas, como en el caso de la variable %%i, si esta se llamara %%I no seria reconocida como la misma. Otro uso que puede ser aplicado en el FOR es el listado de carpetas o archivos, como veremos a continuacin: Listado de archivos: Cdigo : @echo off FOR %%x in (a*) DO echo %%x pause Este cdigo, listara todos los archivos que comienzan con A. Por que? * (asterisco) es un signo comodn, por lo cual al poner a*, estamos diciendo cualquier archivo que tenga una A delante y luego cualquier cosa.

Otro ejemplo del uso de comodn, es listar archivos con extensin comn como seria este: Cdigo : @echo off FOR %%x in (*.jpg) DO echo %%x pause Aqui nos estara listando todos los archivos que tengan la extensin .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 quisiramos 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 y si quisiramos listar todos los documentos que estn dentro de una carpeta contando los que estn dentro de carpetas se ocupa solamente /R (Sin /D) FOR /R %%x in (a*) DO echo %%x

Creacin de Mens Como ya vimos Condicionales y Etiquetas les enseare una manera de hacer Mens. Comenzaramos indicando las instrucciones y las opciones, de esta manera: Cdigo : @echo off :Menu cls echo Seleccione su opcin tecleando el numero respectivo. echo. echo 1. Primera Opcion echo 2. Segunda Opcion echo 3. Salir

Luego para seguir ocuparamos esto:

Cdigo: set /p var= if %var%==1 goto :Uno if %var%==2 goto :Segundo if %var%==3 goto exit if %var% GTR 3 echo Error goto :Menu 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 opcin. Tambin 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. Cdigo : :Uno cls color a Echo Esta es la Primera Opcion Echo Precione una tecla para volver al menu Pause>Nul goto :Menu :Segundo cls color 1a Echo Esta es la Segunda Opcion Echo Precione una tecla para volver al menu Pause>Nul goto :Menu

Quedando para terminar nuestro cdigo as:

Cdigo : @echo off :Menu cls echo Seleccione su opcion tecleando el numero respectivo. echo. echo 1. Primera Opcion echo 2. Segunda Opcion echo 3. Salir set /p var= if %var%==1 goto :Uno if %var%==2 goto :Segundo if %var%==3 goto exit if %var% GTR 3 echo Error goto :Menu :Uno cls color a Echo Esta es la Primera Opcion Echo Precione una tecla para volver al menu Pause>Nul goto :Menu :Segundo cls color 1a Echo Esta es la Segunda Opcion Echo Precione una tecla para volver al menu Pause>Nul goto :Menu Bueno, con eso les basta para imaginarse como crear sus mens personales. Como vieron puede cada seccin tener su color, incluso puedes cambiar la barra de ttulo. Ve probando, no pierdes nada.

Apagado y Reiniciado de Pc Una cosa muy interesante que puedes hacer con Batch es Apagar y Reiniciar tu Pc, incluso programarlo para que apague a la hora que desees. Es notablemente fcil. Se ocupa de la siguiente manera el apagado. shutdown -s -t Tiempo -c "Comentario" Donde -s significa que lo apagaremos, -t debe ir seguido de los segundos que demorara apagar. En Windows XP mostrara un contador, con el comentario que va luego de -c, pero en Windows Vista no abra ni un contador, solamente saldr una alerta con el Comentario, que ni siquiera es obligatorio. Bueno, de seguro quieres hacer la prueba. La puedes hacer pero antes de eso te recomiendo que leas lo siguiente. Puedes cancelar el apagado (Antes de que el contador termine) solamente escribiendo shutdown -a ya sea en un archivo de texto con extensin .bat, como en el mismo Shell. Entonces, pues has la prueba.

Cdigo : shutdown -s -t 999999 -c "Esto se esta apagando" Tendrs suficiente tiempo para ejecutar el siguiente cdigo. (11 Cdigo : shutdown -a Con esto ya probamos los dos y podemos ser felices. Ok, si en vez de ocupar -s usas -r el Pc se reiniciara. Tambin puedes forzar el cierre de los programas, para que no de tiempo de guardar nada. Tan solo ocupando -f Un ejemplo de un Pc, que se Apaga Forzosamente y que puede daar el pc y luego se reinicia es este:

Cdigo : shutdown -r -f -t 0 -c "Bye" IMPORTANTE: No lo recomiendo probar en tu Pc, ya que la apaga en 0 segundos sin preguntar nada. Para programar un apagado lo veremos al final en los Datos Extras, ya que con la funcin AT puedes programar el apagado.

Leer archivos externos Para leer un archivo externo con Batch, como un archivo de texto por ejemplo. Se usa el siguiente cdigo: Cdigo: type "NombreDelArchivo.txt" Simple no?

Insertar al Registro Insertar al registro tu Batch puede ser muy til, la verdad yo no entiendo mucho del registro pero le un poco y aqu tienen un ejemplo que se encuentra a ser sincero en muchas web. Donde haremos que nuestro batch se ejecute con el Sistema. Cdigo:
REG ADD HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun /v MIBATCH .bat /t REG_SZ /d C:MIBATCH.bat

Con la funcin REG ADD Agregamos algo al registro. Con otros comandos podemos borrar. Lo que sigue es la "Direccin" de donde insertaremos el registro que en este caso sera para que nuestro batch se ejecute al iniciar Sesin. En medio de toda la direccin se puede leer MIBATCH.bat yo puse el nombre del Batch pero tambin se puede poner cualquier otra cosa. Ms adelante donde dice:

C:MIBATCH.bat

Es la direccin completa de donde esta nuestro Batch. Con solo esta lnea estamos listos. Haz la prueba!

Otras cosas tiles Para terminar hablare de pequeas funciones que pueden ser de utilidad. Msg*: Esta funcin tiene otras utilidades, pero les enseare esta porque no funciona en todos los Pc. Sirve para abrir una alerta con un mensaje, su utilizacin es la siguiente: Cdigo: msg * EsteEsMiMensaje

AT: Esta es una de las que ms me gusta, es para programar alguna accin a cierta hora. Ejemplo: Cdigo: At 20:00 msg * Son Las 8 de la noche Con esto a las 20:00 nos aparecer un mensaje que nos dir que son las 8 de la Noche. Tambin puedes programar un apagado o cualquier Cosa. Si la hora que das ya paso, se tomara como para el da siguiente. Esas han sido casi todas las funciones del batch. Pruebenlas!