Está en la página 1de 25

MANUAL BATCH NIVEL MEDIO-AVANZADO BY 2FAC3R.

CONTENIDO.
Introduccion2
CD- Aclaracion2
Comandos no explicados anteriormente3
-Dir..3
-If exist...else7
-If not exist, If %errorlevel%........................8
Mas comandos!!!.............................................................10
-Tree11
-Fc12
-Ren.14
-Type15
-At.16
-Call..17
Comando For!................................................................18
Despedida25


INTRODUCCION

Hola lector, este manual va para aquellos que ya se han visto algunos
manuales de batch, ya que este manual ser de nivel medio-avanzado, aqu
me basare en lo que he explicado en los manuales anteriores de Batch, en
este caso ser un complemento de los manuales que he hecho, ya que como
muchos ya me conocern, los dejaba a su bsqueda algunas cosas, en este
manual encontraran todo (o la mayora) de lo que no explique en su
momento, aparte de esto explicare cosas que complementan mas a su
estudio del batch, cuando termines este manual te puedes considerar como
un buen programador en Batch ya que se explicara casi todo sobre Batch, y
pues como muchos ya sabrn uno crece practicando y con buenas ideas de
que programar, tambin mencionar que lo que se vera aqu es posible que a
la primera no lo comprendas del todo, as que no te rindas y sigue
practicando, sin mas rollo voy al manual.

CD ACLARACIN

Dado que en el manual de batch Basico que hize, mencione que el comando
cd no servia para casi nada, quiero aclarar ese punto en este manual, lo
que quize decir es que el cd es fcil sustituirlo por otro comando y es
mucho mas fcil y rpido hacer con otros comandos lo que hace el cd,
tambin aclarar que el cd es muy utilizado en la Shell y no mucho en el bata si
que pueden ir probando el comando cd que ya explique cuando vimos el
troyano en ftp, el comando en el ftp funciona exactamente igual que en el
cmd asi que a probar!!!.


COMANDOS NO EXPLICADOS ANTERIORMENTE
DIR:
Este comando lo pase por alto en los otros manuales asi que vamos a
explicarlo bien :D, el comando dir nos sirve para mostrar la lista de
subdirectorios y archivos que hay en un directorio, un ejemplo seria el que
aplicamos en el ftp para mostrar los archivos que haba adentro, ahora
vamos a otro ejemplo, vamos a la cmd, y vamos a la carpeta %windir% con cd
y vamos a ver que carpetas y archivos tiene dentro :D.

Con esto nos vamos directamente a la carpeta Windows del S.O. ahora
vamos a hacer un dir.

Y nos va a salir esto:

Es ah donde nos va a mostrar los archivos y carpetas que tenemos en
nuestro directorio de Windows.
-Pero no me gusta como lo ordena-
Bien si no te gusta esto pues vamos a checar los parmetros del dir, vamos
a teclear dir /?. Y nos ha salido esto:



Y vemos que con el parmetro /d hace que nuestro dir aparesca clasificado
por columnas ahora vamos a probarlo, tecleamos cls para borrar la pantalla y
despus tecleamos dir /d y nos saldr esto:


Este es un pequeo ejemplo de un parmetro del dir, ahora si te toca a ti
probar los dems, recuerda que para borrar la pantalla tecleamos cls y asi
se nos limpia, recuerda usar /? para pedir ayuda a la Shell.





IF EXIST (GOTO :ETIQUETA1) ELSE GOTO:ETIQUETA2
Dado a que en los manuales anteriores no explique esto bien lo hare ahora,
vamos a hacer un ejemplo, vamos a ver el code:
[code]
@echo off
Title Ejemplo del if exist
If exist texto.txt (goto :seguir) else goto :crear
:crear
Echo este es el ejemplo del if>texto.txt
:seguir
Echo Ya esta creado!
Pause
Start texto.txt
Exit
[/code]
Este es un simple ejemplo del if exist, lo que hace es primero verificar si
existe el archivo texto.txt y si existe muestra en pantalla Ya esta creado
sino lo crea con lo que ya hemos visto que son los redireccionamientos
>|>> en este al crearlo solo escribe este es el ejemplo del if con ayuda del
echo recuerdas? Lo que hemos estado viendo?.
-Si, si ya sigue-
Ok ok, eso es bueno, que recuerdes lo que hemos estado viendo , bien
vamos a continuar, por ultimo el bat lo que hace es ejecutar el texto.txt
que ya a creado en caso de que no exista, y si ya exista pues solo lo ejecuta
xD, ahora te toca a ti probar con tu ingenio y conocimiento, dado que es fcil
no creo que se te complique mucho, recuerda que si tienes dudas primero
usa el /? y si continan las dudas preguntame por los foros (recuerda que
soy 2Fac3R|RocKeG|Gaara_18). Ya que andamos en if explicare los dems,
vamos ahora a

if not exist if %errorlevel%
Vamos que es fcil, el if not exist es lo contrario a if exist, vamos a un
ejemplo con las tres, de una vez :D.
[code]
@echo off
title Bucador de procesos
color 1f
:inicio
cls
Set /p pass= Escribe el password para entrar__
If %pass%==1234 (goto :menu) else goto :error
:error
echo Contrasea incorrecta, vuelve a intentarlo
pause
goto :inicio
cls
:menu
echo Este es un programa para saber si esta corriendo un proceso
echo Hecho por 2Fac3R.
pause
cls
set /p pro= Escribe el nombre del proceso a buscar:__
tasklist /M | find /i "%pro%.exe"
if %errorlevel% EQU 0 (echo.Proceso Abierto) else (echo.Proceso Cerrado)
pause
cls
echo Programa creado por 2Fac3R.
pause
exit
[/code]
Este code es un poco mas complejo, es aqu donde empieza lo difcil de
Batch, vamos a analizar el code lnea por lnea para que se entienda, primero
vemos title esto ya lo explicamos y es el comando que se encarga de
poner un titulo a nuestro bat, despus viene el comando colo este
comando se encarga de colorearnos nuestro programa, en este caso
elegimos 1f que es con fondo azul y letras blancas. El siguiente comando es
el set /p, que nos pide una contrasea y en caso de ser 1234 accede al
men, sino es muestra un mensaje de error y al presionar una tecla vuelve a
pedir la contrasea, todo esto con el comando if, despus en el men nos
muestra informacin del programa que nosotros imprimimos con echo,
despus de presionar una tecla nos limpia la pantalla y va al programa que
nos interesa, nos pide el nombre del proceso que queremos buscar, lo guarda
en la variable pro y al dar enter busca el proceso. Ahora es donde deben
poner atencin xD, en el code que sigue nos muestra el comando tasklist
que si recordamos es el que se encarga de listar los procesos, vemos que
tiene el parmetro /m que es el que nos muestra todas las tareas que
tienen cargadas modulos de bibliotecas dll que coinciden con el nombre
estndar mencionado. Y en caso de que no especificaramos el nombre nos
muestra todos los modulos cargados para cada tarea. Despues en el code
vemos el | que es el que se encarga de separar las cosas (uff a ver si me
entienden xD) sigue leyendo y entederas xD, despus el comando find se
encarga de buscar en la lista de procesos que cargamos ya con tasklist en
este caso usamos el parmetro /i que si en caso de que el usuario ingrese
con maysculas y minsculas el nombre lo cambia a predeterminado, en
otras palabras las omite :D, vemos que hemos usado en el nombre la
variable que preguntamos antes de ello que es %pro%, bien despus de
eso vamos a algo nuevo el if %errorlevel%, esto sin haber estudiado otro
lenguaje es posible que no se entienda mucho, lo que hace en este caso el
errorlevel es que en caso de ser cierto (true) devuelve algo y si es falso (false)
devuelve otra cosa, en este caso si el proceso existe o sea que el errorlevel sea
true nos devuelve Proceso Abierto y si no se encuentra entonces equivale a
false y en este caso devuelve Proceso Cerrado (espero haberme explicado bien
:D), otra cosa en batch el true quivale a 0 y el false equivale a 1 por eso es
que si el resultado es 0 (true) devuelve tal y si el resultado no es 0 (o sea que
sea 1) devuelve tal cosa. Estudia lo que acabo de escribir y seguro que lo
entenderas sin ningn problema.

MAS COMANDOS!!!

Seguimos con los comandos que no se han explicado y que nos
pueden servir de mucho para nuestros programas bat. El siguiente
comando es


TREE

Este comando es parecido al dir solo que este comando nos muestra
de forma grafica la estructura de carpetas, vamos a hacer un ejemplo,
vamos a ver de forma grafica la carpeta Windows para ello usaremos
el comando cd para ubicarnos (cd %windir%) entonces vamos a la
practica:

Recuerda que existen los parmetros, pero en este caso no usare
ninguno :D, asi que sigamos:

Esta esta muy extensa asi que solo pongo una como ejemplo, creo que
se entendi bien el comando sigamos.
FC
Este comando es muy sencillo, solo explicare el nico y con un
parmetro ya que nosotros no lo utilizaremos mucho, este comando se
encarga de comparar 2 archivos o conjuntos de archivos y muestra sus
diferencias, vamos directo a la practica en este caso tengo 2 achivos
txt en mi C:/ para el ejemplo:

Veamos los parmetros:

Vamos a utilizar el parmetro /u para compararlos con texto
UNICODE.

Si nos fijamos en este caso nos muestra en limpio solo las diferencias
de nuestros txts. Lo dems depende de ti hombre que no se hace
todo fcil en la vida xD.

REN
Este comando es fcil de entender, y es muy simple, lo que nos hace
es renombrar un archivo, vamos con un ejemplo sencillo,
renombraremos el prueba.txt por HxC.txt vamos a la practica:


Y si vamos a la ruta C:/ vemos que el archivo ha sido renombrado,
este comando no tiene parmetros ya que es super fcil de usar.

TYPE
Este es otro comando sencillsimo, vamos directo a la practica:

Lo que hace este comando es mostrar el contenido de uno o mas
archivos, al dar enter da esto:

Que es el contenido de nuestros archivos. Verdad que es fcil?, lo
mismo que el anterior si vamos a type/? no nos muestra parmetros
:D.

AT

Sin palabras xD, mas fcil no se puede (hago esto para no alargar
mucho el manual y no te aburras ni te revuelvas, adems que recuerda
que la practica hace al maestro =D).




CALL



COMANDO ESPERADISIMO FOR!!!:

Como el comando for es muy extenso me decidi a hacerme un manual solo
para ello (basndome en un manual que hace muchsimo tiempo vi por la
red), asi que aqu esta:
SINTAXIS
Cdigo:
FOR %variable IN (cjto) DO comando

donde:
%variable: es la variable que va a tomar el valor correspondiente en
cada iteracion del for siendo de una unica letra, distinguiendo entre
MAY y min (o numero)
cjto: un cjto de ficheros
comando: lo que queremos hacer en cada vuelta del for

Observaciones:
Dentro de un bat, se debe usar %%variable (no %variable), esto se
debe a que como he dicho antes, %variable puede tomar un numero,
por lo que se podria confudir con los parametros del bat, si solo
se pusiese un %


PARAMETROS:

FOR /D %variable IN (conjunto) comando DO [parmetros]
se usa cuando las extensiones de comandos estan habilitadas

FOR /R [[unidad:]ruta] %variable IN (set) DO comando [parmetros]
Cuando usamos comodines, para ejecutar el for recursivamente
dentro de un directorio especificado
(unidad:ruta) en los archivos especificados por los comodines

FOR /L %variable IN (ini,paso,fin) DO comando [parmetros]
Este es el tpico FOR de toda la vida. supongo ini=0 paso=1 y fin=4,
se crearia la sucesion 0,1,2,3,4,5

FOR /F ["opciones"] %variable IN (cjto archivos) DO comando
[parmetros]
Este es el que tiene chichita.

FOR /F ["opciones"] %variable IN (cjto archivos) DO comando
[parmetros]

En este, se procesa un conjunto de archivos, de tal forma que se abre
el primer archivo, se procesa, se cierra y se pasa al siguiente archivo
del cjto. Cada archivo se procesa por lineas, es decir, que el for sera
aplicado a cada una de las lineas del archivo. El for inicia en la
primera linea, y cuando acabe su proceso digamos que se "resetea" y
pasa a la siguiente lnea. Las lineas en blanco se saltan
Ahora, el procesamiento de cada linea se puede modificar a nuestro
antojo mediante las ["opciones"], siendo estas:

EOL=c
Indica que se procesen todas las linbeas del archivo menos las que
empiecen por este caracter

SKIP=n
Indica el n de linea del archivo por el que empezamos a procesarlo.
es decir, si pongo skip=5, las 5 primeras lineas
del archivo no se procesaran

DELIMS=xxx
Dice donde (en que simbolos) se quedara el for en cada vuelta
(dentro de una misma linea)

TOKENS=x,y,m-n
Dice cuales son las vueltas validas del for, es decir, en que vueltas
del for nuestra variable tomara un valor. se pueden
poner posiciones sueltas: 2,3,4 o rangos: 1-4 o incluso los dos juntos:
1,3-5. ademas, si ponemos el *, se aade otra variable adicional
que contendra el resto de la cadena que no haya llegado a ser
procesada por el FOR

USEBACKQ
Esto es para el uso de comillas, no es algo muy importante, pero
puede ser util dependiendo de como se llamen los archivos
que vayamos a tratar y demas. esto mirarlo si interesa en la ayuda

Lo que viene despues en la ayuda es sobre el uso de expansin de
variables, que puede ser util, pero mejor mirarlo en la ayuda
ademas, esto se puede entender mejor en la ayuda del SET

Bueno. hasta aqui es la ayuda del for de msdos explicada por mi, que
posiblemente no os haya servido pa na.
Vamos con unos ejemplos a ver si solucionan la cosa.

Primero explicare como funciona el FOR /F ["opciones"] .........

Pues vamos a ver, esto lo que hace es buscar en todas las filas de un
archivo. Entonces, almacena en variables el trozo de cadena
que existe entre un delimitador y otro, y asi hasta el n de tokens.
un ejemplo cutre seria, en la linea

hola buenos dias

si el delim=" " (espacio en blanco) y tokens=1,2,3. esto significa que
queremos coger 3 (1,2,3) trozos de cadena que esten uno tras
otro de forma contigua y delimitados por el espacio. asi obtendriamos
3 variables que almacenarian
i=hola
j=buenos
k=dias


Pongamos ahora un ejemplo real por si no se ha entendido.
Creamos el archivo de texto 1.txt con el siguiente contenido

----------- 1.txt
;hola buenos dias
este es un manual, dedicado al for
;para.la.gente.que.quiera.aprender
;y para los demas tambien
hasta luego
1 =Hola
2=adios
3=buenas
-----------------

vamos a realizar un primer FOR. abrimos la consola y ponemos
Cdigo:
for /f "eol=; tokens=1 delims=," %i in (1.txt) do
echo %i

Este for procesara todas las lineas menos las que empiecen por ; ya
que eol=;
En cada linea que procese solo dara tantas vueltas como "," se
encuentre (delims=,). y almacenara en la variable %i,
solamente la parte de la cadena que se encuentre entre el principio y
la primera (tokens=1) aparicion de ","
Para las lineas que no tengan "," se considera el primer token como la
linea completa, porlo que en esas lineas
en vez de pasar de ella, las tomara enteras en la variable. Asi, el
resultado de este for seria:

este es el manual ---> falta lo que viene a partir de la "," porque no
lo ha cogido debido al delims
hasta luego |
1 =Hola |-->En estas, como no hay "," coge toda la linea
2=adios |
3=buenas |


Otro ejemplo mas claro seria:
Cdigo:
for /f "eol=; tokens=1,2,3 delims= " %i in (1.txt)
do echo %i %j %k
lo mismo daria poner la parte tokens asi:
Cdigo:
for /f "eol=; tokens=1-3 delims= " %i in (1.txt) do
echo %i %j %k

Ahora queremos coger de cada linea, menos de las que empiecen por
; (eol=;) las cadenas que se encuentren entre
token1 --> el principio y el primer " " (delims=" ")
token2 --> el primer " " y el segundo " "
token3 --> el segundo " " y el tercer " "
y el resto lo desechariamos.
Darse cuenta de que en este caso necesitamos coger 3 cosas por cada
linea, por lo que no nos vale solo con la variable
%i, si no que necesitaremos tambien las %j y %k. Para esto, j y k no se
declaran en el for (como la %i, de hecho
unicamente se dclara la primera que se vaya a usar, puede ser %i, %a,
%1 o lo que sea), si no que se ponen en el la
parte del comando a la hora de trabajar con ellas.
Tener en cuenta tambien que si declaramos la variable %i en el for
todas las que usemos deben ir consecutivas en
orden alfabetico y nunca superar los 26 simbolos. seria %i %j %k %l
%m....
si seleccionamos %a en el for, seria %a %b %c %d.
y siempre diferenciando entre MAY y min.

Entonces en este ejemplo nos saldria lo siguiente:

este es un
hasta luego
1 =Hola
2=adios
3=buenas

si queremos, para verlo mas claro, podemos meter algun caracter
raro entre %i, %j y %k
Cdigo:
for /f "eol=; tokens=1-3 delims= " %i in (1.txt) do
echo %i ? %j ? %k

Obteniendo el siguiente resultado

este ? es ? un
hasta ? luego ?
1 ? =Hola ?
2=adios ? ?
3=buenas ? ?

Vemos como en las lineas 3 y 4 aparecen las ? al final y sin nada entre
medias, esto se debe a que la variable %i
contiene 2=adios (todo hasta el final) y las variables %j y %k estan
vacias


Un ultimo ejemplo para ver el uso del * seria. para ello le quitamos el
; al principio de todas las lineas que lo tuvieran:
Cdigo:
for /f "tokens=1,2* delims= " %i in (1.txt) do echo
%i ? %j ? %k

Ahora pone en las variables %i y %j:
token1 (variable %i)--> entre el principio y el primer " " (delims=" ")
token2 (variable %j)--> entre el primer " " y el segundo " "

y en la variable %k, que viene definida por el token *, se pondra el
resto de la cadena

asi el resultado seria:

hola ? buenos ? dias
este ? es ? un manual, dedicado al for
para.la.gente.que.quiera.aprender ? ?
y ? para ? los demas tambien
hasta ? luego ?
1= ? hola ?
2=adios ? ?
3=buenas ? ?


--------------------------

por ultimo os pongo un ejemplo muy util cuando por ejemplo
queremos buscar en un archivo de registro, un valor determinado.

imaginaros que quiero buscar en el archivo 1.reg, el valor de la clave
SwapMouseButtons. sabiendo que en el archivo
1.reg, existe una linea que pone SwapMouseButtons=1. pero ademas
hay muchas otras lineas similares como: mouse=9, but=6
....

asi que si usamos el for normal sobre el archivo directamente no hay
forma de sacar solo el valor que queremos
por lo que podemos hacer un find sobre el archivo que nos devuelva
unicamente la linea que contiene la palabra
SwapMouseButtons, y hacer el for sobre ella. con esto quiero decir,
que ademas de sobre archivos, podemos aplicar el for
sobre comandos que actuen sobre archivos y nos den lo que queremos
de ellos de una forma mas especifica.
este ejemplo seria asi:
Cdigo:
FOR /F "tokens=1* delims==" %A IN ('FIND /I
"SwapMouseButtons" c:\1.reg') do echo %B

el resultado seria que muestra por pantalla: 1 si hubiesemos puesto
..... do echo %A mostraria por pantalla SwapMouseButtons


DESPEDIDA
Bueno aqu es donde termina este manual, he explicado muchsimas
cosas que haba pasado por alto, este manual se puede tomar como
un complemento de los anteriores y tambin como un manual de
nivel medio-avanzado, si te haz ledo todo el manual y lo haz
entendido esto quiere decir que ya eres programador batch asi que a
celebrar!!!, les recuerdo que dudas, comentarios, criticas y/o
sugerencias comunquenmelas en el foro, me paso muy seguido por
ah asi que seguro que me encuentran, soy Gaara_18|RocKeG|2Fac3R
asi que me pueden encontrar con esos Nick, los espero comentando
por los foros y codeando para que practiquen todo lo aprendido, algo
que no he explicado en esto son los compliladores, que son los que se
encargan de convertir nuestro pequeo bat a exe, en el foro he
posteado los compiladores asi que pasate por haya para que los
descargues y pruebes a pasarlo a lenguaje binario, recuerda que aun
hay mas (mucho mas) de batch asi que no te quedes con esto y busca
y pregunta dudas que para eso estamos en los foros, me despido de
ustedes desendoles lo mejor en este ao, espero nos veamos seguido
por los foros :D.
-.2Fac3R.-

También podría gustarte