1-Introduccin 2-Como crear un programa 3-La consola de comandos 4-Eco off / on 5-Help 6-Abrir carpetas, ver su contenido y ejecutar archivos 7-Comando edit 8-Echo 9-Comandos basicos 10-Redirecciones y filtros 11-Set, asignar variables y operaciones 12-Goto 13- IF 14- Ejemplos de programas basicos
INTRODUCCIN
bien aqui boy a hacer una introduccion a lo que es la programacion BATCH, en la programacion en BATCH se pueden poner todos los comandos permitidos en la consola de comandos, al ejecutar el programa los comando se ejecutarand de forma secuencial. Este es el tipico programa de HOLA MUNDO!: Cdigo: @echo off cls echo HOLA MUNDO! pause>nul lo que hace es escribir en la pantalla HOLA MUNDO!, mas adelante ire poniendo ejemplos mas complicados.
La respuesta es sencilla, en MS-DOS las extensiones tienen un maximo de 3 letras y se usan las tres primeras letras de BATCH
LA CONSOLA DE COMANDOS
La consola de comando es esa pantalla negra que seguro que habreis visto alguna vez, para ir a la consola vamos a INICIO alli entramos en EJECUTAR y escribimos "cmd" sin las comillas. Nos saldra una pantalla negra alli se pueden escribir los comandos, por ejemplo escribir esto: Cdigo: echo HOLA A TODOS!! en la pantalla saldra escrito lo que habeis puesto despues del echo, ya explicare el echo mas adelante
Los atributos de color est n especificados con dos dgitos hex (el primero corresponde al segundo plano; el segundo al primer plano). Los dgitos pueden ser cualquiera de los siguientes valores: 0 1 2 3 4 5 6 7 = = = = = = = = Negro Azul Verde Aguamarina Rojo Purpura Amarillo Blanco 8 9 A B C D E F = = = = = = = = Gris Azul claro Verde claro Aguamarina claro Rojo claro Purpura claro Amarillo claro Blanco brillante
Si no se indican argumentos, este comando restaura el color que tena cuando se inici CMD.EXE. Este valor proviene de la ventana de la consola, el modificador de lnea de comando o el valor del registro DefaultColor. El comando COLOR configura ERRORLEVEL a 1 si se realiza un intento de ejecutar el comando COLOR con el mismo color de primer y segundo plano. Por si no ha quedado muy claro teneis que escribir color segido de dos digitos, el primero indica el color de fondo y el segundo indica el color de las letras. Ejemplo: Cdigo: color 0a Esto cambia las letras a vede y el fondo a negro, pero como lla es negro solo cambia las letras
ECHO OFF / ON
Este es muy facil, pero tambien es importante. Si has visto algun programa en BATCH, habras notado que todos empiezan asi: Cdigo: @echo off Lo que hace este comando es que no salga los comandos que escribes en la pantalla, si haces un programa como el HOLA MUNDO y no escribes el echo off al princion envez de salir esto: Cdigo: HOLA MUNDO! Saldria esto: Cdigo: c:\WINDOWS\system32> echo HOLA MUNDO! HOLA MUNDO! y asi no queda muy bien, si queremos volver a activar el eco escribimos echo on. Podemos hacer pruevas en la consola y comprobarlo.
HELP
El comando HELP sirve para pedir ayuda sobre un comando o para ver la lista de comandos disponibles. Para ver los comandos disponibles Escribimos HELP en la consola, nos saldra esto: Cdigo: Para obtener mas informacin acerca de un comando especfico, escriba HELP seguido del nombre de comando ASSOC Muestra o modifica las asociaciones de las extensiones de archivos. AT Planifica comandos y programas para ejecutarse en un equipo. ATTRIB Muestra o cambia los atributos del archivo. BREAK Establece o elimina la comprobacin extendida de Ctrl+C. CALCS Muestra o modifica las listas de control de acceso (ACLs) de archivos. CALL Llama a un programa por lotes desde otro. CD Muestra el nombre del directorio actual o cambia a otro directorio. CHCP Muestra o establece el nmero de p gina de cdigos activa. CHDIR Muestra el nombre del directorio actual o cambia a otro directorio. CHKDSK Comprueba un disco y muestra un informe de su estado. CHKNTFS Muestra o modifica la comprobacin de disco al iniciar. CLS Borra la pantalla. CMD Inicia una nueva instancia del intrprete de comandos de Windows COLOR Establece los colores de primer plano y fondo predeterminados de la consola. COMP Compara el contenido de dos archivos o un conjunto de archivos. COMPACT Muestra o cambia el estado de compresin de archivos en particiones NTFS. CONVERT Convierte volmenes FAT a volmenes NTFS. No puede convertir la unidad actual. COPY Copia uno o m s archivos a otro lugar. DATE Muestra o establece la fecha. DEL Elimina uno o m s archivos. DIR Muestra una lista de archivos y subdirectorios en un directorio. DISKCOMP Compara el contenido de dos disquetes. DISKCOPY Copia el contenido de un disquete en otro. DOSKEY Edita lneas de comando, memoriza comandos y crea macros.
Muestra mensajes, o activa y desactiva el eco. Termina la bsqueda de variables de entorno del archivo por lotes. Elimina uno o m s archivos. Sale del programa CMD.EXE (interfaz de comandos). Compara dos archivos o conjunto de archivos y muestra las diferencias entre ellos. FIND Busca una cadena de texto en uno o m s archivos. FINDSTR Busca cadenas de texto en archivos. FOR Ejecuta un comando para cada archivo en un conjunto de archivos. FORMAT Da formato a un disco para usarse con Windows. FTYPE Muestra o modifica los tipos de archivo utilizados en una asociacin de archivos. GOTO Direcciona el intrprete de comandos de Windows a una lnea en un programa por lotes. GRAFTABL Permite a Windows mostrar un conjunto de caracteres extendidos en modo gr fico. HELP Proporciona informacin de ayuda para los comandos de Windows. IF Ejecuta procesos condicionales en programas por lotes. LABEL Crea, cambia o elimina la etiqueta del volumen de un disco. MD Crea un directorio. MKDIR Crea un directorio. MODE Configura un dispositivo de sistema. MORE Muestra la informacin pantalla por pantalla. MOVE Mueve uno o m s archivos de un directorio a otro en la misma unidad. PATH Muestra o establece una ruta de bsqueda para archivos ejecutables. PAUSE Suspende el proceso de un archivo por lotes y muestra un mensaje. POPD Restaura el valor anterior del directorio actual guardado por PUSHD. PRINT Imprime un archivo de texto. PROMPT Cambia el smbolo de comandos de Windows. PUSHD Guarda el directorio actual y despus lo cambia. RD Elimina un directorio. RECOVER Recupera la informacin legible de un disco daado o defectuoso. REM Graba comentarios en archivos por lotes o CONFIG.SYS. REN Cambia el nombre de uno o m s archivos. RENAME Cambia el nombre de uno o m s archivos. REPLACE Reemplaza archivos. RMDIR Elimina un directorio. SET Muestra, establece o elimina variables de entorno de Windows. SETLOCAL Inicia la localizacin de cambios del entorno en un archivo por lotes. SHIFT Cambia posicin de modificadores reemplazables en archivos por lotes. SORT Ordena las entradas. START Inicia otra ventana para ejecutar un programa o comando. SUBST Asocia una ruta de acceso con una letra de unidad. TIME Muestra o establece la hora del sistema. TITLE Establece el ttulo de la ventana de una sesin de CMD.EXE. TREE Muestra gr ficamente la estructura de directorios de una unidad o ruta de acceso. TYPE Muestra el contenido de un archivo de texto. VER Muestra la versin de Windows. VERIFY Comunica a Windows si debe comprobar que los archivos se escriben de forma correcta en un disco. VOL Muestra la etiqueta del volumen y el nmero de serie del disco. XCOPY Copia archivos y rboles de directorios. Nos solo hay estos comandos, tambien hay algunos como el ping, netstat, tracert,... pero estos mas que comandos son programas que estan en system 32, los programas que estan en system 32 se pueden ejecutar desde la consola escribiendo su nombre. Si necesitamos ayuda sobre un comando de los de esta lista solo hay que usar HELP "AQUI EL COM,ANDO". Por ejemplo mas arriba hems visto la ayuda del comando color, para ver esto tenemos que escribir:
Cdigo: help color Si queremos ayuda en "comandos" como ping o tracert hay que escribir el comando y detras "x" o "/?"
comando CD: Este comando se usa para abrir carpetas, por ejemplo ymaginemos que estamos
en el escritorio y queremos abrir una carpeta que se llama "carpeta", solo hay que escribir esto: Cdigo: cd carpeta y si al llegar a esa carpeta quisieramos volver atras podemos usar el comando CD.. (por si no se ve muy claro lleva 2 puntos al final). Tambien podemos no complicarnos mucho y si volvemos a estar en el escritorio y queremos ir a la carpeta b que esta dentro de a, escribimos esto: Cdigo: cd a/b Es muy facil, no creo que haya dudas
comando DIR y TREE: Estos comando sirven para ver el interior de carpetas, por ejemplo si
estamos en el escritorio y queremos ver su contenido escribimo DIR, pero si estamos en el escritorio y queremos ver el contenido de la carpeta a sin tener que entrar, entonces escribimos: Cdigo: dir a El comando TREE te muestra el interio de las carpetas de forma "grafica" (de forma ramificada). Si estas en el escritorio y escribes TREE te muestra lo que hay en el escritorio y el contenido de las carpetas del escritorio.
Ejecutar archivos: Para ejecutar archivos, si el archivo .exe o .bat esta en system 32 solo hay
que escribir su nombre (no es necesario poner la extension si es .bat o .exe). Si el archivo no esta en system 32 entramos en la carpeta en que este y lo ejecutamos, si no tiene extenision .exe ni .bat entonces si que hay que escribir la extension
COMANDO EDIT
Este coamdo lo que hace es abrir una especie de bolc de notas pero al estilo MS-DOS, tiene un menu de guardar, cargar, copiar, pegar,... Tambien se pueden abrir archivos de texto asi: Cdigo: edit hola.txt Esto abre el archivo "hola.txt". Aqui pongo la ayuda del comando edit para ver sus mados de apertura: Cdigo:
Editor de MS-DOS
Versin 2.0.026
EDIT [/B] [/H] [/R] [/S] [/<nnn>] [/?] [archivos] /B /H /R /S /<nnn> /? [archivo] Fuerza a modo monocromo. Muestra el nmero m ximo de lneas posible para su hardware. Carga archivos en modo Slo lectura. Fuerza el uso de nombres de archivos cortos. Carga archivos binarios, ajustando lneas a todos los
caracteres <nnn>. - Muestra la Ayuda en pantalla. - Especifica qu archivos iniciales cargar. Se pueden usar comodines y especificaciones mltiples.
ECHO
El echo es el comando mas simple y mas usado en programas en BATCH, lo unico que hace es imprimir en la pantalla lo que se escribe detras del echo, mira este ejemplo: Cdigo: @echo off cls echo Hola!, cuanto tiempo si verte pause>nul echo Como estas? pause>nul exit Este codigo hace que es escriba en la pantalla "HOLA!, cuanto tiempo sin verte" y cuando pulsas una tecla te dice: "Como estas?", cuando vuleves a pulsar una tecla el prgrama acaba. Esto no tiene mas complicacion asi que pasamos al siguiente punto.
COMANDOS BASICOS
Aqui boy a explicar algunos comandos del MS-DOS muy comunes en programas .bat.
-Pause: Este comando lo que hace es que para el programa hasta que se pulse una tecla. Es muy
util porque si creamos un programa como este: Cdigo: cls @echo off echo HOLA al ejecutarlo se abrira y se cerrara tan rapidamente que no podremos ver lo que hace, en cambio haciendo asi: Cdigo: @echo off cls echo HOLA pause el programa no se cerrara hasta que pulsemos una tecla. Al escribir el pause en un programa cuando y lo ejecutemos, se vers esto: Cdigo:
Presione un tecla para continuar... si queremos que no se vea nada tenemos que escribir pause>nul, el simblo >es una redireccion que explicare mas adelante
-Cls: Esto no tiene ninguna complicaci, lo unico que hace es borrar lo que hay escrito en la
pantalla, pongo un ejemplo: Cdigo: @echo off dir pause>nul cls pause>nul dir nueva carpeta pause>nul Este codigo te muestra el interior de la carpeta donde lo abres, al pulsar una tecla borra la pantalla y cuando vuelves a pulsar otra tecla te muestra el contenido de nueva carpeta que debe estar dentro de la carpeta donde se ha ejecutado.
-Time: Este comando muestra y te permite cambiar la hora del sistema -Date: Este comando muestra y te permite cambiar la fecha del sistema -Del: Sirve para borrar un fichero. Mira este ejemplo:
Cdigo: @echo off del /q texto.txt Este codigo borra de la carpeta donde se ha abierto el archivo "texto.txt" sin pedir confirmacion ( para no pedir confirmacion hay que usar el atributo /q). Para mas ayuda escribir help del. Si queremos borrar todos lo archivos que comiencen por texto y tengan la extension .txt, escribiremos esto: Cdigo: @echo off del /q texto*.txt Boy a poner algunos ejemplos de uso de comodines como el anterior, imagnemos que queremos borrar un archvo que se llama texto pero que en la extension solo sabemos la 1 letra y la segunda, entonces escribimos esto: Cdigo: @echo off del /q texto.t?t Por si no se ha entendido bien, el comodin " * " representa el resto de caracteres de un nombre y el comodin " ? " representa un caracter, asi que si escribimos esto: Cdigo: @echo off del /q *.* borraremos todos los archivos de la carpeta donde lo hayamos abierto
-Start Este comando abre una nueva ventana de la consola de comandos, aunque tambien puede
abrir webs asi: Cdigo:
-Md:
Crea un directorio:
-Rd:
Elimina un directorio:
Cdigo: @echo off rd carpeta Esto elimina el directorio "carpeta" antes creado
REDIRECCIONES Y FILTROS
Aqui boy a explicar el uso de las redirecciones y los filtros, la cosa es bastante sencilla, pero no es tan sencilla como lo visto anteriormente. Primero hablemos de las redirecciones: Por defecto los comando que se ejecutan van dirigidos a la pantalla de la consola, pero eso lo podemos cambiar, anteriormente hemos visto un ejemplo de redireccion con pause, al escribir un comando >nul lo que hara es que le comando se jecuta pero no muestra nada en ningn sitio, ejemplo: Cdigo: @echo off echo hola>nul dir>nul
tree>nul pause>nul Nada de lo que se ha escrito aqui se vera en la pantalla. Se puede redirigir a otros sitios como la impresora (>prn) o a algun archivo (>nombre_del_archivo.extension). Pongo algun ejemplo: Cdigo: @echo off cls echo HOLA>texto.txt echo HOLA DE NUEVO>>texto.txt dir>prn pause>nul Si te has fijado en el primer echo se redirige al archivo texto.txt (si no esta lo crea), si ese archivo tubiese algo escrito lo borraria todo para escribir "HOLA", pero bajo sale una redireccion asi ">>" esto hace que emvez de borrar el archivo siga escribiendo en la ultima linea. Ahora pasemos a hablar de los filtros, los filtros sirven para cambiar la salida de un comando se usan mediante la barra horizontan " | " (para escribirla hay que presionar alt + 124). Pongo aqui dos filtros: | sort ----> Sirve para ordenar la salida. | more --> Sirve para poder ver todos los datos que se imprimen en la pantalla mas despacio.
set /a res=%n2%+%n1% echo La suma de los dos es: %res% pause>nul Ahora pasemos al comando Goto
COMANDO GOTO
El comando goto sirve para saltar a una etiqueta, aqui explicare como definir una etiqueta y como usar goto para saltar hasta ella Para definir una etiqueta solo hay que escribir: Cdigo: :etiqueta (por si no se ve muy claro antes de "etiqueta" hay dos puntos " : "), si en un programa hubiesemos definido esa etiqueta y quisieramos volver, usamos esto Cdigo: goto etiqueta Pondre un ejemplo usando los 2: Cdigo: @echo off :inicio cls echo Cuantos aos tienes? set /p edad= echo . echo tienes %edad% aos pause>nul goto inicio Este programa nunca acabaria, porque te pregunta constantemente tu edad.
IF
Boy a explicar el comando IF para hacer comparaciones entre variables y otros, primero pongo aqui la tabla de comparaciones: Cdigo: EQU NEQ LSS LEQ GTR GEQ (Esta tabla
igual no igual menor que menor que o igual mayor que mayor que o igual esta copiada del manual de Programacion avanzada de Sirdarckcat)
Para pone igua tambien se puede poner "==" y para poner diferente "not=" El comando If se usa asi: Cdigo:
If %variable%==23 goto verdadero Este codigo lo que hace es si la variable "variable" es 23 salta a la etiqueta "verdadero". Pondre aqui un ejemplo de programa usando IF: Cdigo: @echo off echo Cuanto aos tienes? set /p edad= if %edad% GEQ 18 goto mayor if %edad% LSS 18 goto menor :mayor cls echo Eres mayor de edad pause>nul exit :menor cls echo Eres menor de edad pause>nul exit Este programa te pregunta cuantos aos tienes y te dice si eres mayor de edad o menor Igual que se compara con numeros se pueden comprar cadenas de texto: Cdigo: @echo off :inicio cls echo Introduce la contrasea set /p contra= if %contra%==admin goto correcto else goto incorrecto :correcto cls echo ORRECTO! pause>nul exit :incorrecto cls echo LO HAS ESCRITO MAL, VULVE A INTENTARLO pause>nul goto inicio Si te has dado cuenta en este programa he usado el comando else, que significa que si la condicion no se cumple... Aqui acaba el tutorial ahora pondre aglun codigo mas comlejo de ejemplo y ya esta.
CODIGOS DE EJEMPLOS
Calculadora:
Cdigo: @echo off title CALCULADORA--------Creado por Zhynar_X :menu cls echo --------------------------MENU---------------------------------echo, echo 1.SUMA echo 2.RESTA echo 3.MULTIPLICACION echo 4.DIVISION echo, echo 5.SALIR set /p opt= if %opt%==1 if %opt%==2 if %opt%==3 if %opt%==4 if %opt%==5 goto goto goto goto goto suma resta multi division s
:suma cls set /p suma1=Primer caracter:..................... echo + set /p suma2=Segundo caracter:.................... echo ___________ set /a suma3=%suma1%+%suma2% echo resultado: %suma3% set /a suma3=%suma1%+%suma2% echo Pulse una tecla para volver al menu pause>nul goto :menu :resta cls set /p resta1=Primer caracter::..................... echo set /p resta2=Segundo caracter::.................... echo ___________ set /a resta=%resta1% - %resta2% echo resultado: %resta% echo Pulse una tecla para volver al menu pause>nul goto menu :multi cls set /p multi1=Primer caracter::..................... echo x set /p multi2=Segundo caracter::.................... echo ___________ set /a multi=%multi1% * %multi2% echo resultado: %multi% echo Pulse una tecla para volver al menu pause>nul goto menu :division cls set /p divi1=Primer caracter::..................... echo ___ set /p divi2=Segundo caracter::....................
echo ___________ set /a divi=%divi1% / %divi2% echo resultado: %divi% echo Pulse una tecla para volver al menu pause>nul goto menu :s cls echo Esta seguro de que quiere salir? echo 1.Si (S) echo 2.No,volver (N) set /p opci= if %opci%==n goto volver if %opci%==s goto sal :volver cls echo Ok, presione una tecla para volver al menu pause>nul goto menu :sal cls echo Ok, presione una tecla para salir pause>nul exit