lunes, 4 de julio de 2011

Programacion Batch




 Introducción

En si es programación DOS, pero muchos le llaman batch. Batch es ya cuando se hace con el notepad. Y que es batch? Comandos por lotes, donde todos los comandos que le ponga la persona se ejecutarán rápidamente uno tras otro a una velocidad 950 veces mas rápido que de lo que un buen programador puede hacer.
Hay funciones que se pueden hacer en modo batch que no se pueden hacer directamente desde el CommandPrompt. (Ej: la variable %0, que más adelante la veremos.)


El lenguaje de programación DOS (Disk Operating System) es la base de windows. Mucha gente no lo usa, a otros no les gusta, pero a la hora de la verdad es bastante útil (hasta para recuperar windows y/o archivos ""dañados""). Y para los que quieren empezar en la programación, éste es un buen comienzo.
En el mismo, se pueden crear carpetas, archivos, se pueden renombrar ficheros, borrar documentos, recuperar informaciones, hacer virus "Indetectables", etc...


Practiquemos y aprendamos

Aprendamos a crear un archivo batch (.bat)

Para ello abramos el notepad (Start -> All programs -> Accessories -> notepad).

Una vez abierto, clickeamos arriba donde dice Format, y seleccionamos la opción que dice: "Word Wrap". Esto es para que cuando escribamos una línea de texto larga, no lo siga de largo, sino, que cuando llegue al final, comienze abajo sin tener que darle Enter.




Una vez hecho esto empezemos con los comandos....

Lo primero es "@echo off" (sin las comillas) eso es para ocultar los comandos escritos a la hora de la ejecución.
Luego utilizaremos el comando "echo" es para abrir una línea de texto, se usa para que todo lo que escribas despues del comando lo lea como un texto y no como otros comandos.

Ahora bien, escribiré los comandos y luego daré la explicación de los mismos.

Código
@echo off
echo.
title Mi primer Batch
echo.
echo Hola, este es mi primer batch.
echo.
echo Espero que me guste.
pause
exit

_______________________________________________________________________

Como dije, @echo off es para ocultar los comandos escritos, y como es eso? Que todos los comandos que escribas o utilizes serán ocultos en la ejecución del programa, los comandos no se verán, solo se verá la acción, ej: si escribimos esto "echo Hola People" cuando lo ejecutemos, en vez de desplegarmos "echo Hola People" nos mostrará esto "Hola People", oculta el comando, en este caso el comando "echo".
con "title" le ponemos un título al programa el cual se mostrará en la parte superior "Azul" o el color que le tengan.
Con "echo." lo que hacemos es dejar una línea en blanco (como dar un Enter).
Con "echo" como dije anteriormente, es para que lea la línea como un texto y no como comandos, porque sino, nos daría error.
Con "pause" hacemos una pausa antes de seguir con los comandos que van después de este y al mismo tiempo nos mostrará en pantalla "Pess any key to continue" y comenzará nuevamente con los siguientes comandos al oprimir cualquier tecla.
Con "exit" nos cerramos el programa.

Ahora guardamos, para ello vamos a File -> Save As; lo guardamos con el nombre que queramos pero a lo último añadimos ".bat", quedaría asi: "Mi_primer_batch.bat", el ".bat" al final es muy importante ya que si no se lo pones no funciona.



Ya tenemos claro lo que son los comandos title, echo, pause y exit; son los comandos primarios y mas usados a la hora de crear un batch.

Ahora vamos a aprender como hacer que nuestro batch cambie de directorio y nos muestre el contenido del mismo.

Si tienes windows xp escribe lo siguiente:

Código
@echo off
title Mi segundo Batch
cd "C:\Documents and Settings\nombre de usuario\My Documents"
dir
pause
exit


Windows Vista/7


@echo off
title Mi segundo Batch
cd "C:\Users\nombre de usuario\Documents"
dir
pause
exit

______________________________________________________________________

Ahora bien, con el comando "cd" (Change Directory) cambiamos de directorio (lo mismo que hacer doble click en un folder), en este caso nos fuimos a My Documents.
con "Dir" hacemos que nos muestre todas las carpetas y archivos que hay en My Documents.

Ya hemos aprendido lo básico prácticamente. Estarán diciendo "aja? y q ue hago con esto? waw" XD, con esto podrán hacer muchas cosas, pues estamos aún en lo básico.

Ahora vamos a aprender a como crear y utilizar las variables de entorno y algunas de las que tiene Windows por "default". Ahora vamos a lo interesante.

Trabajando con las variables

Una variable en programación es un espacio que reservamos (en la memoria) con un nombre el cual se le añadirá un contenido y luego lo mostramos. (definición en el caso del batch o DOS)

En batch las variables  llaman con "Signos de Porciento" (%%).

Para crear una variable utilizamos el comando "SET". Empezemos.....

Código
@echo off
title Creando variables
echo.
echo Porfavor escriba su nombre
set /p nombre=
cls
echo.
echo Hola %nombre% espero que estes bien.
pause
exit

_______________________________________________________________________

OK, vemos lo mismo que hicimos anteriormente pero con otros comandos.
Con "set /p nombre=" lo que hacemos es que dejamos que la persona le ponga el contenido a la variable que en este caso se llama "nombre", pero puedes cambiar "nombre" por otra cosa. Con set se crean las variables, pero cuando le añades "/p" es para que haga una pausa y dejar que la persona intruzca un texto (todo lo que quiera) y esperará a que la misma oprima "Enter" para poder continuar. "Nombre" es la variable que adentro está todo el contenido que la persona escribió, en este caso sería el nombre porque fué lo que pedistes.

Nota: Siempre que vayas a crear una variable, nunca dejes el signo "=" al final de la variable. Lo que va despues de "=" es el valor de la variable y lo que esta antes de "=" es el nombre de la variable.

Luego podrán ver que más abajo dice: "echo Hola %nombre%......" pues, con echo habrimos una líea de texto y luego de "Hola", llamamos a la variable y nos mostrará el nombre que la persona escribió.

Con "cls" (Clear Screen) lo que hacemos es que limpiamos la pantalla (Como si le hubiesemos dado backspace a todo).

Si quieres crear una variable tu mismo sin que la otra persona tenga que escribirlo, se hace de la misma manera pero sin "/p". Ej:

Código
@echo off
title Creando mi propia variable
set mensaje=Hola, espero que te encuentres bien.
echo.
echo %mensaje%
pause
exit

Aquí creamos nuestra propia variable, si queremos escribir "Hola, espero que te encuentres bien." muchas veces, creamos una variable cuyo contenido sea ese y en vez de escribir todo eso, pues escribirmos:

Código
@echo off
set msj=Hola, espero que te encuentres bien.
echo %msj%
echo %msj%
echo %msj%
pause
exit

"RECORDATORIO: Siempre que vayas a guardar el batch, en donde dice filename (despues de darle a SaveAs) escribies lo que quieras pero siempre terminalo con .bat (ej: prueba.bat, mis proyectos.bat) de lo contrario el batch no funcionará"


Ahora vamos a aprender a hacer una calculadora utilizando las variables y el comando SET.
Ya aprendimos a usar una parte del comando "set" y que se le añade el "/p", ahora usaremos el "/a" que se utiliza para hacer cálculos y bregar con el área de la matemática, pero en este caso solo aprenderemos como hacer la suma, resta, multiplicación y división.
Empezemos.......

Código
@echo off
title Mi calculadora en batch.
echo.
echo Escriba el numerador.
set /p up=
cls
echo.
echo Ahora escriba el denominador.
set /p down=
cls
set /a resultado=%up% + %down%
echo.
echo El sobrante es %resultado%
pause
exit


Como pueden ver, le hemos añadido el comando "set /a resultado=" este comando, se utiliza para hacer cálculos matemáticos, en este caso lo que hicimos fue sumar; pero sumar que??? Pues sumar los numeros que la persona escribió o dio como valor a %up% y %down% y luego con "set /a resultado=" haremos que sume utilizando "+" entre medio de la o las variables y el resultado lo guardará dentro del nombre de la variable que en este caso es "resultado". Y luego desplegamos el resultado que es este caso es "echo El sobrante es %resultado%".

Para hacer la resta, división y multiplicación lo hacemos de la misma manera, solo que cambiamos el "+" por uno de estos:

(-) Resta
(*) Multiplicación
(/) División


Ok, ahora bien, vamos a ver algunas de las variables que trae windows por defecto...

Variables por defecto
%cd% Directorio en el cual nos encontramos actualmente. Para saberlo escriban "echo %cd%".

%userprofile% Directorio del usuario. (Muy útil. Pronto veremos como usarla).

%windir% Directorio de windows.

%programfiles% Directorio de "Program Files".

%programfiles(x86) Directorio de "Program Files (x86)" (En caso de que el Windows sea 64 bits).

%homedrive% Directorio raíz (C:\).

%homepath% Directorio del usuario pero sin "C:\".

%computername% Nombre de la computadora (Ej: USUARIO-PC).

%username% Nombre del usuario.

Éstas son algunas de las variables de entorno que tiene Windows por "default".

Creando archivos y carpetas

Ya teniendo claro eso ahora vamos a aprender algo un poco más avanzado. Aprenderemos a cómo crear un nuevo directorio, a usar las variables que trae Windows por "default" y a crear documentos de texto. Para crear un documento de texto, tenemos que saber las extensiones de lo que queremos crear. Ej: *.doc (Documento de Word 2003), *.docx (Documento de Word 2007 en adelante)  *.txt ('más usado' Documento de Texto).

Bien, para crear una carpeta usamos los comandos "MD" o "MKDIR", pero el que usaremos es "MD", los dos hacen lo mismo, solo que uno es mas largo que el otro. Y para crear un documento utilizamos éste símbolo ">".

Nota: Se me había olvidado mencionarles un comando muy importante, y es el comando "REM", es para hacer un comentario en el programa el cual no se verá en la ejecución del programa. Con este pueden documentar sus programas que hagan y lo estaré utilizando.

Comenzemos.....

Código
@echo off
title Mi nuevo programa batch.
echo.
rem Te pregunta el nombre que le quieres dar al nuevo "Folder".
echo Escriba el nombre de la carpeta a crear:
set /p nc=
cls
cd "%userprofile%\Desktop"
rem Crearemos un nuevo "Folder" en el "Desktop" con el nombre que la persona escribió.
md "%nc%"
cls
echo.
rem Te dice que escribas el contenido de un documento que creará.
echo Ahora escribe un contenido:
set /p contenido=
cls
rem Entra al "Folder" que acabó de crear.
cd "%nc%"
rem Crea un documento de text llamado "Prueba" y cuando lo abras con doble click, verás lo mismo que escribiste cuando te pidió que escribieras el contenido.
echo %contenido% > Prueba.txt
exit

________________________________________________________________________

Ok, no lo vean complicado porque no lo es. Lo primero asignamos "nc" como variable donde la persona pondrá el nombre de la carpeta.
Con "cd "%userprofile%\Desktop" lo que hacemos es que entramos a la carpeta del usuario, y luego al desktop (Pantalla principal), el "\" separa un folder de otro.
Ya que estamos en el desktop, el batch crea una carpeta con el nombre que la persona escribio al principio, que le habiamos asignado la variable "nc" y creamos el folder con "md "%nc%" y porque las comillas en "%nc%"?? porque si el nombre del directorio tiene espacio por ejemplo: Nueva carpeta y lo dejas sin las comillas, te crea dos carpetas una que se llama Nueva y la otra se llamará carpeta, ahora, si le añades las comillas te crea la carpeta con el espacio, y como no sabemos si el nombre de la carpeta tiene espacios o no, pues le damos las comillas por si acaso.

Una vez creado la carpeta le pedimos que cree un contenido. Luego entrará a la carpeta creada y guardará el contenido en un archivo de texto (*.txt) llamado Prueba.

Con ">" creamos un documento, pero si queremos añadirle más cosas al documento creado, pues ahí utilizamos ">>".

Seguir con la segunda parte 


Comenta en privado













Nombre:









Cuerpo:









1 comentario: