• Manual super sencillo de Batch by 2Fac3R (parte 1)

 #311017  por 2Fac3R
 03 Jul 2011, 00:05
Hola indetectables, les vengo a traer este pequeño aporte para los mas nuevos. Un manual de bacth que hize hace ya bastante tiempo, espero les guste:


¿Bien y que es Batch?
Bueno, es sencillo es un lenguaje de programaci�n de scripting ( o sea, que no necesita compilaci�n para probarlo, si quieres una definici�n mejor busca en Google), este lenguaje muchos dicen que no es potente, y en parte tienen raz�n y en partes no, me explico, todo depende de la imaginaci�n que tenga uno para hacer sus codes, bueno la parte verdadera es que con Batch no se puede hacer por ejemplo un Sistema Operativo ( es u ejemplo exagerado, pero sirve como ejemplo, xd) o tampoco es posible crear un Keylogger, por ejemplo, pero si se pueden hacer muchas cosas como; troyano, worm o cualquier tipo de Malware (Claro que no sera igual a uno creado en �C� por ejemplo), pero es muy utli y nos puede servir para varias cosas.
�Y como que podemos hacer en Batch?
Bueno como ya he dicho se pueden hacer cientos de cosas pero depende de tu
imaginaci�n, como por ejemplo, podemos hacer desde agendas, calculadoras, virus,
etc. Todo depende de tu imaginaci�n y de lo que quieras hacer en Batch?

OTRAS COSAS:
Primero que nada no me hago responsable del mal uso que este manual pueda llegar
a dar ideas, xd. Otra cosa es que recuerda que Batch es �simple� a que me refiero?,
bueno me refiero a que no puedes hacer de batch muchas cosas que se pueden hacer
en otros lenguajes de programaci�n como; C, Python, Perl, Pascal, etc. Otra cosa
este manual esta hecho para el aprendizaje por lo tanto, no voy a mostrar el "super
paso a paso" de como se hagan las cosas, si no explico algo es para que te ense�es
a buscar en google o se te quite la verguenza de preguntar a un colega que sepa del
tema, disculpen si esto es latoso pero es necesario para el aprendizaje.

-Ya me estas aburriendo ve al grano- Ya ya voy, xd.
Empecemos:

�COMO HAGO UN PROGRAMA EN BATCH?
Bueno aqu� vamos a necesitar el block de notas, y una mente abierta, abrimos el
block de notas

La estructura de Batch es la siguiente:
Código: [ Debe registrarse para ver este enlace ]
@echo off 
<comandos>
Exit
Empecemos por describirlos el �echo off� sirve para que no se muestren los
comandos que nosotros ponemos y el �@� sirve para que no se muestre ese echo off,
�<comandos> es aqu� donde van los comandos que vamos a teclear, y �exit� es el
comando para salir del archivo por lotes.

Vamos a un ejemplo muy conocido escribamos:
Código: [ Debe registrarse para ver este enlace ]
@echo off
Echo �Hola mundo�
Exit
el "echo" se usa para mostrar algo en pantalla.

Gu�rdalo con extensi�n �.bat� (o sea, guardar como --> holamundo.bat) y ejec�talo.

--Que co�o a pasado solo salio una ventanita negra muy r�pido desaparecio, me
estas viendo el pelo o que?-- No, no tranquilo, eso lo hice a prop�sito para
explicarte otro comando que es el �pause�.
Ahora da click derecho sobre �holamundo.bat� y elige �editar�, bueno nos salio la
ventanita de Block de notas, bien ahora escribe el siguiente code:
Código: [ Debe registrarse para ver este enlace ]
@echo off
Echo Hola mundo
Pause
Exit
-�Que ha pasado ahora si mostro el "hola mundo"?- Como ya dije antes el "pause"
pausa o detiene (xd) los comandos hasta que teclees una tecla, xd.

Bien vamos muy bien, este es el ejemplo que se usa al inicio de todo lenguaje de
programacion. Como ya dije ocupas una mente curiosa y te doy una ayudadita para
conseguir mas informacion de un comando usamos un parametro (-que es un parametro-)
(no te voy a hacerlo facil busca en Google) el cual es "/?" (sin comillas) por
ejemplo abre la shell de windows (inicio-->ejecutar-->cmd-->enter) y escribe "echo
/?" y da enter.

Te ha salido esto?:
Código: [ Debe registrarse para ver este enlace ]
Muestra mensajes o activa y desactiva el eco del comando.

  ECHO [ON | OFF]
  ECHO [mensaje]

Escriba ECHO sin par metros para mostrar la configuraci�n actual del eco.
Pues bien eso es lo que hace el comando "echo", son diferentes cosas, vdd?.

-Ahh se me ah ocurrido una idea, voy a ver que hace los comandos "exit" y
"pause" que me has ense�ado-

Perfecto si eres de los que piensan asi, eso te ayudara mucho en un futuro,
entonces ahora teclea "exit /?" y/o "pause /?".

Bueno, sigamos, espero que hayas entendido mas o menos lo que es un comando, sino
ya sabes que existe Google (yo recomiendo Google pero puedes buscar en tu buscador
favorito ya sea "Altavista", "Yahoo", etc)
-Todo esto se me hace bien pero no me gusta la ventanita negra para mis futuros
programas- Para ello tenemos el comando "Color" usa un poco de imaginacion y esto
te lo dejo a ti. (�una pista? "/?").
Quieres conocer todos los comandos (o la mayoria) que existen en MS-dos (Batch)?
Pues entonces teclea en la shell "help" y mira los comandos. Te ha salido esto:
Código: [ Debe registrarse para ver este enlace ]

"Para obtener mas informaci�n acerca de un comando especifico, 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."
-�Que, eres brujo o adivino?- No, no lo soy,xd.

Usa un poco de imaginacion para los comandos que no se vayan a explicar aqui.
Vamos a unos ejemplos de algunos comandos, usaremos como ejemplo el comando "start"
vamos:
Código: [ Debe registrarse para ver este enlace ]
@echo off
start www.google.com
pause>nul
exit
-Que co�o has hecho porque escribes "pause>nul" si me habias dicho que era solo
"pause"- Bueno ese es un parametro de "pause" pero no solo de pause se un poco
curioso y prueba.
-No [email protected]$ ya no explicas nada- ok, ok el ">nul" sirve para que no se muestre el
comando es como "@echo off" pero solo para cierto comando, te has fijado que al
ejecutar el codigo no te aparece el "presione una tecla para continuar" pero si
tienes que presionar una tecla para continuar y ha abierto el explorador por
defecto que tengas ya sea el iexplorer, mozilla, chrome, etc. Bueno este es un
ejemplo del comando "start" como su nombre lo indica "inicia" algo. Vamos a otro
ejemplo, supongamos que queremos que nuestro programa haga que muestre "se va a
abrir el internet explorer" y que lo habra, �Como lo hariamos?.
Vamos a la practica:
Hagamos un algorito (un algoritmo es una serie de procedimiento que seguira en este
caso nuestro programa).
ALGORITMO:

1: Que no muestre los comandos (@echo off)
2: Que nos muestre "Se va a abrir el internet explorer" (echo ...)
3: Abrir el internet explorer (start...)
4: Pausar nuestro programa (pause | pause>nul)
5: Que se cierre.

Bien, vamos a hacer nuestro programa: (usare "#" para poner comentarios o cadenas")
Código: [ Debe registrarse para ver este enlace ]
@echo off #Vemos que es la "1" de nuestro algoritmo
echo Se va a abrir el internet explorer # 2 de nuestro algoritmo
start iexplorer #3 de nuestro algoritmo.
pause>nul #4
exit #5
-No sirve!!!- Me lo temia, puede que no sirva por varias cosas, una de ellas seria
que el internet explorer no este en el escritorio, otra seria que el nombre del ie
no es "iexplorer" sino "internetexplorer", otra logica seria que no tengas el
navegador (como yo,xd)
Prueba con otros programas.
Ten en cuenta que no se pone ".exe" ".txt" ni ".com" son las unicas excepciones
que nos da ms-dos. para otras extenciones de archivos se tendra que poner su
extencion. Vamos a otras cosas, explicare los comandos mas basicos que existen
"md", "rd", del,etc. "md" sirve para crear un directorio como nos dij� "help"
su sintaxis es:

MD [unidad:]ruta

vamos a crear una carpeta:
Código: [ Debe registrarse para ver este enlace ]
@echo off
md "nombre_de_carpeta"
pause>nul
exit
y nos ha creado una carpeta en el sitio actual donde esta el batch.
-Se me a ocurrido algo pero no se si se pueda, crear una carpeta en el disco local-
Si se puede aunque no este el batch en el directorio, para ello la sintaxis nos
pide unidad y ruta.
vamos a crear una carpeta con una subcarpeta llamada "b" en la carpeta "a"en el
disco duro llamado "C:"
Para ello hacemos esto:
Código: [ Debe registrarse para ver este enlace ]
@echo off
md c:\a\b
pause>nul
exit
-Pero que hago si mi disco no se llama "c:", pues tienes 2 opciones;
1.- simplemente cambiar el nombre por el que tu tengas
2.- Usar una variable de entorno

VARIABLES DE ENTORNO:

Las variables de entorno nos sirve para que en vez de escribir toda la ruta solo
escribamos la variable de entorno y nos sirve para lo mismo (xd, ni yo me entendi,
por eso vamos a la practica para que me entiendas mejor).

En este caso voy a explicar en el ejemplo de "md", suponemos que no tienes tu hd
con el nombre de c:/ sino con x:/ y tu amigo tiene su hd con el nombre f:/ y quieres
que tu programa de crear carpetas sirva tanto en tu pc como en la de tu amigo pepe
Te encuentras con el problema de que si pones:
Código: [ Debe registrarse para ver este enlace ]
@echo off
md x:\a\b\b1\ck
pause>nul
exit
en tu pc funciona, pero al mandarlo a tu amigo pepe, no le funciona porque el tiene
su hd llamado f: y tu pusiste "x:\", bien para ello utilizaremos una variable de
entorno la cual en este caso es: %homedrive%\, ahora vamos a ver nuestro code:
Código: [ Debe registrarse para ver este enlace ]
@echo off
md %homedrive%\a\b\b1\ck
pause>nul
exit
�Que ha pasado?
Pues es simple la variable de entorno guarda el directorio por defecto de el hd.
ahora manda a tu amigo pepe y veras que le funciona :)
Vamos a poner otro ejemplo de variable de entorno.
Supongamos que quieres borrar una carpeta que hiciste en la subcarpeta de windows
llamada "system32" que tiene otra subcarpeta llamada "1028" la cual se llama prueba
para ello para crearla tuviste que hacer lo siguiente:
Código: [ Debe registrarse para ver este enlace ]
@echo off
md %homedrive%\WINDOWS\system32\1028\prueba
exit
y para borrala haces esto:
Código: [ Debe registrarse para ver este enlace ]
@echo off
rd %homedrive%\WINDOWS\system32\1028\prueba
exit
Pues te la haz complicado muchisimo, para borrarla con las variables de entorno
seria asi:
Código: [ Debe registrarse para ver este enlace ]
@echo off
md %windir%\system32\1028\prueba
exit
y para borrarla:
Código: [ Debe registrarse para ver este enlace ]
@echo off
rd %windir%\system32\1028\prueba
exit
Espero que hayas entendido lo de las variables de entorno, te pongo las que conosco:

Windows= %windir% 1 | %systemroot%
Archivos de Programa= %programfiles%
Archivos temporales= %TEMP% y %TMP%
Disco Local= %homedrive% | %SYSTEMDRIVE%
Carpeta de User= %userprofile% | %homepath%
Datos de programa = %APPDATA%

Bien explicado esto espero que sea facil el siguiente texto; el cual es sobre las
variables.
Empecemos.- Las variables se escriben entre signos de porcentajes ejemplo.-
%variable%. Una variable como su nombre lo dice varia segun el dato que se le de
por lo general son numeros por ejemplo al hacer una calculadora o en la mayoria de
los programas porque es la forma mas facil para que no haya problemas cuando el
usuario eliga. como no se explicarme -ah en serio?- vamos a la p`practica y a los
ejemplos:

Vamos a poner un ejemplo del archirequetereconocido "Hola %nombre"

Algoritmo sintetizado:

1.- Que nos pregunte nuestro nombre
2.- Que el nombre se guarde en una variable llamada "nombre"
3.- Que nos muestre nuestro nombre
4.- Fin

Vamos a codear
-Pero como lo hago si no me has explicado como guardar el nombre en la variable-
Bueno como ya sabes no soy bueno para explicarme asi que voy directo al ejemplo:
Código: [ Debe registrarse para ver este enlace ]
@echo off
echo �Cual es tu nombre?
set /p nombre= 
cls
echo �Cual es tu apellido?
set /p apellido= 
cls
echo ya te reconoci %nombre% %apellido%
echo adios
pause>nul
exit
Que es lo que hizo nuestro programa?, bueno primero que nada nos pregunta cual es
nuestro nombre y al teclear nuestro nombre lo guarda en la variable "nombre" con
el comando set /p y limpia la pantalla con el comando "cls", despues nos pregunta
nuestro apellido y lo guarda en la variable "apellido", limpia la pantalla y nos
dice ya te reconoci %nombre% (muestra lo que pusimos en "�Cual es tu nombre?")
%apellido% (muestra lo que guardamos en "Cual es tu apellido?"), y nos dice adios
y se cierra el bat.

Aqui termina la primera parte de este manual hecho por mi 2Fac3R. Dudas, sugerencias
o criticas opinen, tengan en cuenta que estoy ense�ando lo basico para que se
entienda sabemos que muchas cosas que aqui estan se pueden hacer con menos lineas,
aqui hable poco realmente de lo que es batch, en la siguiente parte me basare mas
en la practica y no en la teoria, haremos una calculadora, un bucle, worm y quiza
mas cosas. Por mientras trata de estudiar los comandos que vimos en "help".

Zalu2