viernes, 19 de octubre de 2012

Manual de Batch (Programación)

Manual de Batch (Programación)



INDICE 


1-Introducción 
2-Como crear un programa 
3-La consola de comandos 
4-Eco off / on 
5-Help 
6-Abrir carpetas, ver su contenido y ejecutar  
7-Comando edit 
8-Echo 
9-Comandos básicos 
10-Redirecciones y filtros 
11-Set, asignar variables y operaciones 
12-Goto 
13- IF 
14- Ejemplos de programas básicos (calculadora) 


INTRODUCCIÓN 

BATCH es un lenguaje de procesamiento por lotes que se ejecuta en la consola MS-DOS.Los programas en Bat se crean en una hoja de texto plano como la del bloc de notas por ej. Se pueden poner todos los comandos permitidos en la consola de comandos, al ejecutar el programa los comando se ejecutaran de forma secuencial. Este es el típico programa de ¡HOLA MUNDO!: 

Código: (escriban este código en el bloc de notas) 

@echo off 
echo ¡HOLA MUNDO! 
pause 
exit 

lo que hace es escribir en la pantalla ¡HOLA MUNDO!, mas adelante iré poniendo ejemplos mas complicados. 

COMO CREAR UN PROGRAMA: 

Para crear un programa solo tenemos que usar cualquier editor de texto (yo uso el bloc de notas), en el editor escribimos el programa, podéis 
probar el programa de HOLA MUNDO y tenemos qu guardar el archivo con extensión .bat o .cmd. Si guardamos con .cmd solo funcionara en windows XP y si lo guardamos con extensión .bat funcionara en todos, es preferible guardarlo como .bat. 

¿Porque se le llama .bat? 
La respuesta es sencilla, en MS-DOS las extensiones tienen un máximo 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 habréis visto alguna vez, para ir a la consola vamos a INICIO allí entramos en EJECUTAR y escribimos "cmd" sin las comillas. Nos saldrá una pantalla negra allí se pueden escribir los comandos, por ejemplo escribir esto: 

Código: 

echo ¡HOLA A TODOS!! 

en la pantalla saldrá escrito lo que habéis puesto después del echo, ya explicare el echo mas adelante 

Personalizar la consola de comandos: 


Seguro que a algunos les gustaría cambiar el color de las letras de la consola de comandos o cambiar el color de fondo, bien pues para eso tenemos el comando color. Explico aquí un poco. 

Configura los colores predeterminados de primer y segundo plano de la consola. 

COLOR [atr] 


atr Especifica el atributo de color de la salida de consola 

Los atributos de color están especificados con dos dígitos hex (el primero 
corresponde al segundo plano; el segundo al primer plano). Los dígitos pueden ser cualquiera de los siguientes valores: 

0 = Negro 8 = Gris 
1 = Azul 9 = Azul claro 
2 = Verde A = Verde claro 
3 = Aguamarina B = Aguamarina claro 
4 = Rojo C = Rojo claro 
5 = Purpura D = Purpura claro 
6 = Amarillo E = Amarillo claro 
7 = Blanco F = Blanco brillante 

Si no se indican argumentos, este comando restaura el color que tenía 
cuando se inicia CMD.EXE. Este valor proviene de la ventana 
de la consola, el modificador de línea de comando o el valor del registro 
DefaultColor. 

en caso de querer agregarle color a nuestro bat el código seria el siguiente: 

@ echo off 
color 6d 
echo hola mundo! 
pause 
exit 

Por si no ha quedado muy claro tenéis que escribir color seguido de dos dígitos  el primero indica el color de fondo y el segundo indica el color de las letras. Ejemplo: 

Código: 

color 0a 

Esto cambia las letras a vede y el fondo a negro, pero como ya es negro solo cambia las letras 

ECHO OFF / ON 


Este es muy fácil  pero también es importante. Si has visto algún programa en BATCH, habrás notado que todos empiezan así: 

Código: 

@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 principio en vez de salir esto: 

Código: 
¡HOLA MUNDO! 

Saldría esto: 

Código: 
c:WINDOWSsystem32> echo ¡HOLA MUNDO! 
¡HOLA MUNDO! 

y así no queda muy bien, si queremos volver a activar el echo escribimos echo on. Podemos hacer pruebas 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 saldrá esto: 

Código: 

Para obtener mas información acerca de un comando específico, 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 comprobación 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 número de página de códigos 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 comprobación de disco al iniciar. 
CLS Borra la pantalla. 
CMD Inicia una nueva instancia del intérprete 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 compresión de archivos en particiones 
NTFS. 
CONVERT Convierte volúmenes FAT a volúmenes 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 líneas de comando, memoriza comandos y crea macros. 
ECHO Muestra mensajes, o activa y desactiva el eco. 
ENDLOCAL Termina la búsqueda de variables de entorno del archivo por lotes. 
ERASE Elimina uno o más archivos. 
EXIT Sale del programa CMD.EXE (interfaz de comandos). 
FC 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 asociación 
de archivos. 
GOTO Direcciona el intérprete de comandos de Windows a una línea en 
un programa por lotes. 
GRAFTABL Permite a Windows mostrar un conjunto de caracteres extendidos 
en modo gráfico. 
HELP Proporciona información 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 información 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 búsqueda 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 símbolo de comandos de Windows. 
PUSHD Guarda el directorio actual y después lo cambia. 
RD Elimina un directorio. 
RECOVER Recupera la información legible de un disco dañado 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 localización de cambios del entorno en un archivo por lotes. 
SHIFT Cambia posición 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 título de la ventana de una sesión 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 versión 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 número de serie del disco. 
XCOPY Copia archivos y árboles de directorios. 


Nos solo hay estos comandos, también hay algunos como el ping, netstat, tracert,... pero estos mas que comandos son programas que están en system 32, los programas que están 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 "AQUÍ EL COMANDO". Por ejemplo mas arriba hemos visto la ayuda del comando color, para ver esto tenemos que escribir: 

Código: 

help color 


ABRIR CARPETAS, VER SU CONTENIDO Y EJECUTAR ARCHIVOS 

En esta parte del tutorial aprenderemos a navegar por el ordenador con la consola y con programas. 

comando CD: Este comando se usa para abrir carpetas, por ejemplo y imaginemos que estamos en el escritorio y queremos abrir una carpeta que se llama "carpeta", solo hay que escribir esto: 

Código: 


cd carpeta 

y si al llegar a esa carpeta quisiéramos volver atrás podemos usar el comando CD.. (por si no se ve muy claro lleva 2 puntos al final). También 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: 

Código: 

cd a/b 

Es muy fácil, 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 escribimos DIR, pero si estamos en el escritorio y queremos ver el contenido de la carpeta a sin tener que entrar, entonces escribimos: 

Código: 

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 extensión 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 extensión .exe ni .bat entonces si que hay que escribir la extensión 


COMANDO EDIT 


Este comando lo que hace es abrir una especie de bloc de notas pero al estilo MS-DOS, tiene un menú de guardar, cargar, copiar, pegar,... También se pueden abrir archivos de texto así: 

Código: 

edit hola.txt 

Esto abre el archivo "hola.txt". Aquí pongo la ayuda del comando edit para ver sus modos de apertura: 

Código: 


Editor de MS-DOS Versión 2.0.026 Copyright (c) Microsoft Corp 1995. 

EDIT [/B] [/H] [/R] [/S] [/<nnn>] [/?] 

/B - Fuerza a modo monocromo. 
/H - Muestra el n£mero máximo de l¡neas posible para su hardware. 
/R - Carga archivos en modo Solo lectura. 
/S - Fuerza el uso de nombres de archivos cortos. 
/<nnn> - Carga archivos binarios, ajustando l¡neas a todos los 

caracteres <nnn>. 
/? - Muestra la Ayuda en pantalla. 

- Especifica que‚ archivos iniciales cargar. Se pueden usar 
comodines y especificaciones múltiples. 

ECHO 

El echo es el comando mas simple y mas usado en programas en BATCH, lo único que hace es imprimir en la pantalla lo que se escribe detrás del echo, mira este ejemplo: 

Código: 

@echo off 
cls 
echo ¡Hola!, cuanto tiempo si verte 
pause>nul 
echo Como estas? 
pause>nul 
exit 

Este código hace que es escriba en la pantalla "¡HOLA!, cuanto tiempo sin verte" y cuando pulsas una tecla te dice: "Como estas?", cuando vuelves a pulsar una tecla el programa acaba. Esto no tiene mas complicación así que pasamos al siguiente punto. 

COMANDOS BÁSICOS 


Aquí voy 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 útil porque si creamos un programa como este: 

Código: 
cls 
@echo off 
echo HOLA 

al ejecutarlo se abrirá y se cerrara tan rápidamente que no podremos ver lo que hace, en cambio haciendo así: 


Código: 

@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 vera esto: 

Código: 


Presione un tecla para continuar... 

si queremos que no se vea nada tenemos que escribir pause>nul, el simblo >es una redirección que explicare mas adelante 

-Cls: Esto no tiene ninguna complicación  lo único que hace es borrar lo que hay escrito en la pantalla, pongo un ejemplo: 

Código: 

@echo off 
dir 
pause>nul 
cls 
pause>nul 
dir nueva carpeta 
pause>nul 

Este código 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: 

Código: 

@echo off 
del /q texto.txt 

Este código borra de la carpeta donde se ha abierto el archivo "texto.txt" sin pedir confirmación ( para no pedir confirmación 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 extensión .txt, escribiremos esto: 

Código: 

@echo off 
del /q texto*.txt 


Voy a poner algunos ejemplos de uso de comodines como el anterior, imaginemos que queremos borrar un archivo que se llama texto pero que en la extensión solo sabemos la 1º letra y la segunda, entonces escribimos esto: 

Código: 

@echo off 
del /q texto.t?t 


Por si no se ha entendido bien, el comodín " * " representa el resto de caracteres de un nombre y el comodín " ? " representa un caracter, así que si escribimos esto: 

Código: 

@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 también puede abrir webs así: 

Código: 

@echo off 
start www.google.es 


-Type: Muestra el contenido de un archivo de texto, por ejemplo así: 

Código: 

@echo off 
type texto.txt 


-Title: Establece el titulo de una ventana de la consola de comandos, se usa así: 

Código: 

@echo off 
title mi ventana 
pause>nul 

Esto cambia el titulo de la ventana a "mi ventana" 

-Md: Crea un directorio: 

Código: 


@echo off 
md carpeta 

Esto crea un directorio llamado carpeta 

-Rd: Elimina un directorio: 

Código: 

@echo off 
rd carpeta 

Esto elimina el directorio "carpeta" antes creado 

-Copy: Copia ficheros y carpetas: 

Código: 


@echo off 
copy texto.txt carpeta1 

Esto copia el archivo "a.txt" en la carpeta "carpeta 1" 


Bien, creo que ya he puesto los comandos mas básicos, pasemos a la siguiente parte 


REDIRECCIONES Y FILTROS 

Aquí voy 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 redirección con pause, al escribir un comando >nul lo que hará es que le comando se ejecuta pero no muestra nada en ningún sitio, ejemplo: 

Código: 

@echo off 
echo hola>nul 
dir>nul 
tree>nul 
pause>nul 

Nada de lo que se ha escrito aquí se vera en la pantalla. 

Se puede redirigir a otros sitios como la impresora (>prn) o a algún archivo (>nombre_del_archivo.extensión). Pongo algún ejemplo: 

Código: 

@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 tuviese algo escrito lo borraría todo para escribir "HOLA", pero bajo sale una redirección así ">>" esto hace que en vez 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 horizontal " | " (para escribirla hay que presionar alt + 124). Pongo aquí 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, ASIGNAR VARIABLES Y OPERACIONES 


Ahora llegamos al comando Set, también uno de los mas usados, sirve para asignar variables y hacer operaciones entre ellas. Cuando sepamos este comando ya podemos hacer una calculadora perfectamente. 

Si queremos escribir algo en la pantalla y que lo almacene en una variable tenemos poner Set /p varible=, pongo un ejemplo: 

Código: 
@echo off 
cls 
echo Como te llamas?? 
set /p var= 
echo Hola %var%!! 
pause>nul 

Ysi queremos hacer operaciones entre variables ponemos set /a var= %var1%+%var2%, pongo un codigo: 

Código: 

@echo off 
cls 
echo Introdice el numero 1º 
set /p n1= 
echo Introduce el numero 2º 
set /p n2= 
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, aquí explicare como definir una etiqueta y como usar goto para saltar hasta ella 

Para definir una etiqueta solo hay que escribir: 

Código: 

:etiqueta 

(por si no se ve muy claro antes de "etiqueta" hay dos puntos " : ", si en un programa hubiésemos definido esa etiqueta y quisiéramos volver, 
usamos esto 
Código: 

goto etiqueta 

Pondré un ejemplo usando los 2: 

Código: 
@echo off 
:inicio 
cls 
echo Cuantos años tienes? 
set /p edad= 
echo . 
echo tienes %edad% años 
pause>nul 
goto inicio 

Este programa nunca acabaría, porque te pregunta constantemente tu edad. 

IF 


Voy a explicar el comando IF para hacer comparaciones entre variables y otros, primero pongo aquí la tabla de comparaciones: 

Código: 

EQU - igual 
NEQ - no igual 
LSS - menor que 
LEQ - menor que o igual 
GTR - mayor que 
GEQ - mayor que o igual 


Para poner igual también se puede poner "==" y para poner diferente "not=" 

El comando If se usa así: 

Código: 


If %variable%==23 goto verdadero 

Este código lo que hace es si la variable "variable" es 23 salta a la etiqueta "verdadero". Pondré aquí un ejemplo de programa usando IF: 

Código: 


@echo off 
echo Cuanto años 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 años tienes y te dice si eres mayor de edad o menor 

Igual que se compara con números se pueden comprar cadenas de texto: 


Código: 

@echo off 
:inicio 
cls 
echo Introduce la contraseña 
set /p contra= 

if %contra%==admin goto correcto 
else 
goto incorrecto 

:correcto 
cls 
echo CORRECTO! 
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 condición no se cumple... 

Aquí acaba el tutorial ahora pondré algún código mas complejo de ejemplo y ya esta. 

CÓDIGOS DE EJEMPLOS 


Calculadora: 

Código: 

@echo off 
title CALCULADORA--------GuiaPcs
: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 goto suma 
if %opt%==2 goto resta 
if %opt%==3 goto multi 
if %opt%==4 goto division 
if %opt%==5 goto 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 





Gracias a eugenegrin

No hay comentarios:

Publicar un comentario