Documente Academic
Documente Profesional
Documente Cultură
Apndice
El apndice est sujeto a modificaciones.
1 Introduccin.
2 Recomendaciones.
3 Cmo empezar?.
4 Comandos Batch.
5 Comandos If y Set.
5.1. - Variables de entorno.
5.2. - Trabajando con variables.
5.3. - Operaciones aritmticas.
5.4. - Criptografa.
5.5. - Polimetra
6 Bucles.
7 Trabajando con archivos.
8 Comando For.
1. Introduccin
Qu es batch?
Citar
En DOS, OS/2 y Microsoft Windows un archivo batch es un archivo de procesamiento por lotes. Se trata
de archivos de texto sin formato, guardados con la extensin BAT que contienen un conjunto de
comandos MS-DOS. Cuando se ejecuta este archivo, (mediante command.com) los comandos
contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas.
Cualquier comando MS-DOS puede ser utilizado en un archivo batch.
2. Recomendaciones
3. Cmo empezar?
4. Comandos Batch
Echo
Echo - Echo of / @echo of (Echo activado por default)
Echo: Activa el eco. Muestra la ruta dnde se ejecutan los comandos.
Echo of / @echo of: Desactiva el eco. Oculta la ruta dnde se ejecutan los comandos.
Cls
Borra la pantalla.
Goto
Sirve para dirigirte a una etiqueta*.
Citar
*Una etiqueta es una palabra [seguida de 'dos puntos' ( : )] que identifica un men.
Help
Muestra los comandos de la consola (internos predeterminados).
Pause
El archivo por lotes se para hasta que se presione una tecla para continuar.
Title
Inserta un ttulo al archivo .bat
Comando /?
Los signos /? detrs de un comando, hacen que se muestre la informacin de dicho
comando.
5. Comandos If y Set
Con el modificador /p, damos la opcin al usuario a que inserte un/os dato/s que se
guardan en una variable.
*Al principio igualamos la variable 'saludo' a la palabra hola, asique el resultado es:
Cdigo: You are not allowed to view links. Register or Login
La variable es igual a hola
*Si 'saludo' lo hubiramos igualado a adios, el resultado sera as:
Cdigo: You are not allowed to view links. Register or Login
La variable es igual a adios
*Si 'saludo' lo hubiramos igualado a otra cosa diferente, el programa no mostrara
nada porque 'saludo' no se iguala a ninguna de las dos condiciones.
#Parmetros de If
El resultado es:
Cdigo: You are not allowed to view links. Register or Login
El numero es igual a 10El programa se cerrara si la variable 'numero' no fuera igual a 10.
If y else
Vase el siguiente cdigo
Cdigo: You are not allowed to view links. Register or Login
set var=pasqui
if %var%==Manoel (echo La variable es Manoel) else (echo La variable no es Manoel)
pause>nul
*Como bien vemos, la variable 'var' posee la palabra pasqui, por lo tanto nuestra
condicin propone que si la variable 'var' es igual a Manoel muestra:
Cdigo: You are not allowed to view links. Register or Login
La variable es Manoel
y si la variable no es Manoel, muestra:
Cdigo: You are not allowed to view links. Register or Login
La variable no es Manoel
Por lo tanto, podemos decir del parmetro else, que significa " SI NO ". El comando
que va despus de esle, se ejecuta siempre que la condicin propuesta sea errnea.
If %errorlevel%
Citar
"Cada orden externa de ms-dos genera un cdigo de salida a su trmino indicando si pudo realizarse
satisfactoriamente.
Generalmente un cdigo de salida 0 indica que no hubo ningn problema y un cdigo de salida
superior hace referencia a diferentes errores.
Muchos ficheros por lotes necesitan saber si la orden anterior cumpli su cometido correctamente:
para ello utilizan la orden If errorlevel.
Es muy importante recordar que la orden se ejecutar si el cdigo de salida es igual o superior al
especificado detrs de ERRORLEVEL.
Citar
HOMEDRIVE=Disco local (habitualmente C:)
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=%homedrive%\Documents and Settings\Usuario\Datos de programa
CLIENTNAME=Console
CommonProgramFiles=%homedrive%\Archivos de programa\Archivos comunes
COMPUTERNAME=USUARIO-CB9E372C
ComSpec=%homedrive%\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEPATH=\Documents and Settings\Usuario
LOGONSERVER=\\USUARIO-CB9E372C
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=%homedrive%\ruby\bin;%homedrive%\WINDOWS\system32;%homedrive%\WINDOWS;
%homedrive%\WINDOWS\System32\Wbem;%homedrive%\Arch
ivos de programa\Archivos comunes\Adobe\AGL
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.RB;.RBW
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0407
ProgramFiles=%homedrive%\Archivos de programa
PROMPT=$P$G
RUBYOPT=-rubygems
SESSIONNAME=Console
TEMP=C:\DOCUME~1\Usuario\CONFIG~1\Temp
TMP=C:\DOCUME~1\Usuario\CONFIG~1\Temp
USERDOMAIN=USUARIO-CB9E372C
USERNAME=Usuario
USERPROFILE=%homedrive%\Documents and Settings\Usuario
windir=%homedrive%\WINDOWS
Otras variables que tambin podemos utilizar son %time% y %random%... por ejemplo
Sustitucin de carcteres.
Citar
%var:~a,b%
donde:
Ejemplo:
Vase el siguiente cdigo
Cdigo: You are not allowed to view links. Register or Login
set var=12/11/2010
echo %var:~3,2%
pause>nul
El echo nos mostrar los 2(b) carcteres despus del 3(a) carcter, por lo tanto, el
echo nos mostrar el mes de la fecha guardada en la variable var.
5.4. Criptografa.
Cuando nosotros instertamos un valor en una variable (obviamente con set) lo que
estamos haciendo es asignar un nombre (la variable) a un valor.
Prametros
El signo % seguido de un nmero (del 1 al 9) son las parmetros que se pasan al llamar
a un archivo bat o a una etiqueta con el comando call. Por ejemplo si tenemos un
archivo llamado help.bat con la lnea
Cdigo: You are not allowed to view links. Register or Login
echo Hola %1Si lo llamamos tecleando en la Consola de Windows "help.bat pyxolo" se
mostrar en la pantalla "Hola pyxolo".
%0 representa el nombre del archivo bat en ejecucin y %# representa todos los
parmetros que se le pasan.
(# perteneciente al intervalo [1-9])
Ya con estos tres mtodos en mente nos disponemos a estudiar algunos cdigos que os
propongo:
Cdigo #1
Cdigo: You are not allowed to view links. Register or Login
@echo of
set var=hola
set var=%var:o=0%
set var=%var:a=4%
set /p enter=Password:
if %enter%==%var% (echo correcto) else (echo incorrecto)(utilizamos el mtodo de sustitucin
de carcteres para la encriptacin. Password = h0l4)
Cdigo #2
Cdigo: You are not allowed to view links. Register or Login
@echo of
set var=hola
set var=%var:o=0%
set var=%var:a=4%
set /p enter=Password:
if %enter%==%var:~0,2%%var:~-1% (echo correcto) else (echo incorrecto) (Ahora lo complicamos
un poquito ms utilizando la extraccin de carcteres. Password = h04)
Cdigo #3
Cdigo: You are not allowed to view links. Register or Login
@echo of
set conv=set function
set pyxolo=pyxolo
set /p pass="Password: "
call :method %pyxolo%
if "%pass%"=="%function%" (echo correcto) else (echo incorrecto)
pause>nul
exit
:method
%conv%=%1
%conv%=%function:y=1%
%conv%=%function:o=0%(Ahora hemos utilizado el mtodo de sustitucin de carcteres y
hemos utilizado un parmetro. Password = p1x0l0)
Pues con estos tres mtodos y alguno ms podremos crear un 'crypter', hacer
crackme's... Todo depende de nuestra mente :P
5.5. Polimetra.
La polimetra, en batch, es la combinacin de dos o ms variables entre si. Veamos un
simple ejemplo (el mo por excelencia)
Como podemos observar, he metido una variable (%n%) dentro de otra variable
(%function%). En este caso la he utilizado para extraer un cierto nmero de carcteres
definidos por el usuario. He utilizado el comando Setlocal + valor de
enabledelayedexpansion para mandarle a mi archivo .bat que habilite la expansin de
variables. Asique cmo podemos ver, la polimetra consiste en insertar una variable
dentro de otra. Esto puede sernos realmente til a la hora de programar!
6. Bucles.
Los bucles, en batch, son trozos de cdigos que se repiten a lo largo de la ejecucin
del archivo batch.
Cmo se hacen los bucles?
Cdigo: You are not allowed to view links. Register or Login
:etiqueta
echo hola, esto es un bucle infinito
goto etiqueta(Como vemos se muestra hola, esto es un bucle infinito indefinidamente)
MD
Cdigo: You are not allowed to view links. Register or Login
md directorioCrea un directorio
Cdigo: You are not allowed to view links. Register or Login
cd carpetaCrea el directorio/carpeta 'carpeta' en el directorio actual
PUSHD
Cdigo: You are not allowed to view links. Register or Login
pushd directorioLo mismo que con cd pero con pushd guarda el directorio actual y as nos
da la posibilidad de utilizar POPD para volver al directorio guardado.
Cdigo: You are not allowed to view links. Register or Login
pushd directorio
popdPrimero nos moveramos al directorio 'directorio' y luego con popd volveramos al
directorio inicial.
DEL
Cdigo: You are not allowed to view links. Register or Login
del /parmetros "rutadelarchivo"Con del podemos borrar archivos y utilizando los
parmetros decidiremos como lo/s borraremos
Cdigo: You are not allowed to view links. Register or Login
del /f /q /s "%homepath%\desktop\file.exe"Con el parmetro /f forzamos la eliminacin de
archivos de slo lectura. Con el parmetro /q lo hacemos de manera silenciosa, es
decir, no pide confirmacin si utilizamos * (comodn global) para borrar todos los
archivos de un directorio). Y, por ltimo, con el parmetro /s eliminamos todos los
archivos especificados de subdirectorios.
REN
Cdigo: You are not allowed to view links. Register or Login
ren "archivo_a_renombrar" "archivo_nombradoCon ren podemos renombrar archivos.
Cdigo: You are not allowed to view links. Register or Login
ren "%windir%\file.bat" "%windir%\pyxolo.bat
XCOPY
Cdigo: You are not allowed to view links. Register or Login
XCOPY origen destinoCon XCOPY podemos copiar archivos de un directorio a otro y, a su
vez, renombrarlos.
Cdigo: You are not allowed to view links. Register or Login
XCOPY "archivo.txt" "%programfiles%\ayuda.txt"
8. Comando FOR.
Ejemplo:
Cdigo: You are not allowed to view links. Register or Login
FOR %%x IN (archivo1.txt archivo2.exe archivo3.ini) DO del /f /q %%x
Lo que haramos en esta lnea sera lo siguiente
El modificador /L :
El conjunto es una sucesin de nmeros que va desde inicio hasta fin y que
aumenta (o disminuye) en funcin de lo especificado en el paso. As (0, 2, 10) generar
la sucesin 0 2 4 6 8 10 y (10, -1, 5) generar la sucesin 10 9 8 7 6 5
El modificador /D :
OPCIONES
Citar
eol -> Todo lo que est despues de ste carcter (especificado con eol) ser ignorado (para cada
linea)
delims -> Delims nos sirver para separar strings, si no se coloca esta opcin, se usarn como
separadores "espacio" y "tab"
tokens -> Con tokens especificamos qu segmentos, delimitados por "delims", sern pasados a las
variables... por ejemplo:
1, 2, 3
Solo pasar los primeros 3 segmentos.
1,2*
Pasa 2 segmentos, el primero y todo lo que este despues (el * regresa todo el resto de la linea)
1,2,3-7.8.9-14,16*
Pasar los tres primeros segmentos, luego saltar al sptimo, seguir has el noveno. Luego saltar al
14, salta al dieciseis hasta que se acaben los segmentos.
Ejemplo:
Cdigo: You are not allowed to view links. Register or Login
FOR /F "tokens=1,2-4,8,9,10*" %%a IN ("RockoX quiere tontear correr y solo quiere salvarse de la
muerte que le ofrece satan") DO echo %%a %%b %%d %%e %%f %%g %%h
Esta linea dar como resultado lo siguiente:
Bueno esto ha sido todo, espero que les haya gustado y, sobre todo, que hayan
aprendido mucho.