Un fichero batch es un archivo de procesamiento por lote. Se trata de archivos de texto
sin formato, guardados con la extensin *.bat que contienen un conjunto de comandos DOS. uando se ejecuta este archivo bat, los comandos son ejecutados en grupo, de forma secuencial, permitiendo automati!ar diversas tareas. ualquier comando DOS puede ser utili!ado en un archivo batch. Decir que "atch que no es un #enguaje de $rogramacin sino un archivo de cdigo que contiene comandos de la shell %indo&s, 'S(DOS, que se ejecuta desde cmd.exe Hola Mundo en Batch omen!aremos creando un simple ) cl*sico +,ola 'undo+, escribiendo en un archivo de texto el siguiente cdigo- @echo off echo Hola Mundo pause exit .hora guardemos el archivo como nombre.bat ) lo ejecutamos. /os aparecer* una pantalla negra que dir* +,ola 'undo+, luego una linea abajo dir* +$resione una tecla para continuar+. .nalicemos cada apartado- echo: 0mprime el texto que viene despu1s 2el que le pasamos como par*metro3, que en este caso es +,ola 'undo+. 4cho significa eco, por lo mismo +5echo off+ elimina el eco, la repeticin de la ruta en la que nos encontramos en cada l6nea cdigo. pause: omo bien se lee, pausa la ejecucin del cdigo. .dem*s muestra el texto "Presione una tecla para continuar" exit: ierra la ventana de comandos. sin esta linea. 1 Otro cdigo ejemplo de fichero bat- @echo off echo Hola, Cuando pulses la tecla se borrara el contenido y cambiara por otro. pause cls echo Ves? pause exit Si quisiesemos averiguar ms sobre las funciones, o conocer algunas nuevas podemos escribir en el Shell el nombre del comando seguido de /? ) aparecer* toda la informacin necesaria. $odemos poner en pr*ctica esto de la siguiente manera creando el fichero bat, ayudacopy.bat- echo off cls copy ? exit 4l siguiente cdigo que copie un archivo, luego lo mueva a otro directorio, borre el original ) vuelva a copiar el copiado. 4n la carpeta donde crear*s el archivo .bat crea un archivo de texto llamado copiame.txt. 4n 1l, escribe lo que quieras. @echo off echo Hola, Copiaremos un archi!o pause copy "copiame.txt" "copiado.txt" mo!e "copiado.txt" "C"#copiado.txt" del "copiame.txt" cd "C"#" copy "copiado.txt" "copiado$.txt" exit 2 #o que ha hecho la cadena de instrucciones es m*s o menos lo siguiente- $rimero apagamos el eco, luego imprimimos en pantalla +,ola, opiaremos un archivo+ Pausamos el int1rprete para que no siga de largo. . continuacin, copiamos el archivo +Copiame.txt+ ) su copia se llamar* +copiado.txt+. #a movemos a la carpeta ra6! del disco , ) eliminamos el original. $or ultimo cambiamos de directorio al disco , copiamos la copia ) cerramos el "atch. .l escribir echo seguido de un texto ) el signo 7 creamos un archivo con el nombre que siga. Si ocupamos un echo seguido de un texto ) el doble signo 7 2773 se escribir* en la siguiente linea vac6a del archivo que prosiga. ,agamos la prueba- Cdigo : echo Creando un %rchi!o de texto & nue!o.txt echo 'sta es la (e)unda linea && nue!o.txt echo * esta es la (i)uiente && nue!o.txt echo 'sto esta )enial && nue!o.txt Si ejecutamos eso, la pantalla negra se abrir* ) cerrar*. $ero 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 SH!! .qu6 veremos como personali!arlo un poco. "#!#$: on la funcin color podemos cambiar los colores de fondo ) las letras. Siendo su sintaxis- "#!#$ %& Donde .8 4l color de el 9ondo ) "8 olor de las letras. $ara ver todos los colores ve el 'S(Dos ) escribe color /? 3 '('!: $ara cambiar el t6tulo de la barra de tareas solo escribe- 'itle !o)ue)uierascomotitulo Pause Personalizado: $ues si escribes +pause7nul+ no aparecer* ni un texto. 4ntonces si anteponemos un mensaje, quedar6a as6. Cdigo : echo %prieta cual+uier tecla para se)uir pause&nul .dem*s puedes jugar con los caracteres. .qu6 un ejemplo, donde cambi1 los colores ) jugu1 con los caracteres ) personalic1 el pause- 4l cdigo que emple1 para esto fue- @echo off color ,- echo .................................. echo . . echo . Personali/ado . echo . . echo .................................. echo. echo. echo 'sto esta personali/ado, para salir presiona una tecla. pause&nul exit 4l resultado es m*s o menos 4 abe mencionar que echo. 2echo seguido de un punto3sirve para saltarse una l6nea. *atando Procesos: Si lo haces se abre el .dministrador de tarea. 4n la pesta:a procesos salen algunos procesos que est*n andando en tu pc, haci1ndoles clics ) apretando +terminar proceso+ lo puedes acabar. on batch eso es mu) f*cil, se usa la funcin- 'as++ill 2/o funciona en todos los pc, para ver si esta disponible escribe tas++ill /?3 Su sintaxis es- tas00ill f im 1mplayer.exe Si lo ejecutas ) tienes el ;eproductor de %indo&s 'edia abierto, este se cerrar*. %&$(,-# P$#"S#S: $ara abrir procesos se usa la funcin Start. Ejemplo1: start 1mplayer.exe Se abrir* el ;eproductor de '<sica Ejemplo2: start 111.)oo)le.es .%$(%&!S: .hora aprendamos a declarar variables. $ara crear una se escribe- Cdigo : set 23M45'V%56%47' . V%735 $ara llamarla debemos escribir su nombre entre los signos // 5 4jemplo- @echo off set 2ombre. 8a!ier 7etelier 5ui/ echo 92ombre9 pause #a pantalla nos mostrara algo as6- $ara cambiar el valor solo debemos hacer esto- set 2ombre. 2ue!o Valor Si quieres que tu variable sea din*mica, osea que el Usuario la elija antepones /p- set p 2ombre.'scriba su 2ombre" Donde el "atch se pausara solo mostrando el 'ensaje que va luego de 010 dejando que se escriba algo. =ambi1n podemos multiplicarlas, sumarlas, etc 2>,(,*,?3 ... con /a- set numero:.$ ser numero$.;, set a suma. 9numero:9 < 9numero$9 echo 9suma9 pause exit 2so de eti)uetas #a lectura de los cdigos "atch se leen de una manera lineal, pero existe una forma para que el "atch se salte lineas, o vuelva a alguna anterior. 4sto se logra con 4tiquetas ) la funcin goto. $ara crear una etiqueta solo debemos escribir- "nombre'ti+ueta 6 De esta manera el @O=O funciona escribiendo @O=O seguido del nombre de la etiqueta, como vemos en el siguiente ejemplo. @echo off )oto "mieti+ueta echo Por +ue me saltan? "Mi'ti+ueta echo Hola, esta es la eti+ueta y nos saltamos una parte del codi)o. pause&nul exit "ondicionales: (3 4l condicional que veremos el m*s usado- 09. Se puede ocupar para comparar, cadenas, n<meros o para saber si existen archivos. if 9cadena:9 .. 9cadena$9 3rden%'=ecutar Aue se podr6a leer as6- Si cadenaB es igual a adenaC ejecutemos la Orden.4jecutar. =ambi1n existe el /O= para ver si no son iguales. if not 9cadena:9.. 9cadena$9 e=ecutar%ccion $ara saber si un archivo existe, se usa- if exist "2ombre>el%rchi!o" %ccion%'=ecutar o tambi1n para ver si /O existe- if not exist "2ombre>el%rchi!o" %ccion%'=ecutar /o solo se puede ocupar el signo 88 para hacer comparaciones. 4AU, que es el equivalente a 88 /4A, Sirve para cuando queremos ver Desigualdad. #SS, $ara verificar si el numero es 'enor #4A, $ara verificar si es menor o igual. @=;, Si es ma)or @4A, Si es 'a)or e igual. 7 Un ejemplo de esto seria- if ? @A5 ; echo Hola 3#$: /os sirve para repetir un comando varias veces, en distintas variables. Un ejemplo, es este- for 7 99i 62 B-,:,$:C >3 Becho 99iC 4n donde 7 es para especificar que nuestro for se basara en un conteo de n<meros. .qu6 se repetir* un echo, que imprimir* n<meros del D al CB. 99i sera el nombre de la variable que almacenara datos in B-,:,$:C aqu6 especificamos que se repetir* del D al B ) del B al CB. do Becho 99iC es la funcin que se ejecutara en cada repeticin del comando, en este caso un echo que imprimir* la variable. "atch en algunos casos S( reconoce entre ma)<sculas ) min<sculas, como en el caso de la variable EEi si esta se llamara EE0 no seria reconocida como la misma. Otro uso que puede ser aplicado en el 9O; es el listado de carpetas o archivos, como veremos a continuacin- #istado de archivos- @echo off D35 99x in BaEC >3 echo 99x pause 4ste cdigo, listar6a todos los archivos que comien!an con .. F$or queG * 2asterisco3 es un signo comod6n, por lo cual al poner a*, estamos diciendo cualquier archivo que tenga una . delante ) luego cualquier cosa. Otro ejemplo del uso de comod6n, es listar archivos con extensin com<n como seria este- @echo off D35 99x in BE.=p)C >3 echo 99x pause .qui nos estaria listando todos los archivos que tengan la extensin .jpg 8 #istado de arpetas- D35 > 99x in BaEC >3 echo 99x 4s casi lo mismo anterior, tan solo que al indicar ?D solo se aplica a directorios. Si quisi1ramos que se listaran los directorios, juntos a los directorios que tienen estos dentro se ocupa ?; D35 5 > 99x in BaEC >3 echo 99x ) si quisi1ramos listar todos los documentos que est*n dentro de una carpeta contando los que est*n dentro de carpetas se ocupa solamente ?; 2Sin ?D3 D35 5 99x in BaEC >3 echo 99x 9