Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Edición y redacción:
Manoel Antón Folgueira Herández (pyxolo)
1 ·
Introducción.
2 ·
Recomendaciones.
3 ·
¿Cómo empezar?.
4 ·
Comandos Batch.
5 ·
Comandos If y Set.
5.1. - Variables de entorno.
5.2. - Trabajando con variables.
5.3. - Operaciones aritméticas.
5.4. - Criptografía.
5.5. - Polimetría
6 · Bucles.
7 · Trabajando con archivos.
8 · Comando For.
1. Introducción
·¿Qué es batch?
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 extensión 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
1. Lee una/varias vez/ces atentamente cada punto (apéndice) y ponlo en prática programando (por ti
mismo y realizando los ejercicios propuestos por mí).
2. No avances muy rápidamente: Trabaja cada punto (apéndice) hasta alcanzar el conocimiento
óptimo.
3. Nunca te tomes BATCH como otro trabajo más de clase, si no, como un entretenimiento más
(aunque requiera concentración).
4. Nunca te des por vencido al no lograr cualquier cosa. Siempre estamos los usuarios del foro para
ayudarte.
3. ¿Cómo empezar?
4. Comandos Batch
· ¿Qué comandos existen en batch?
Echo
·Echo - Echo off / @echo off (Echo activado por default)
Echo: Activa el eco. Muestra la ruta dónde se ejecutan los comandos.
Echo off / @echo off: Desactiva el eco. Oculta la ruta dónde 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 título al archivo .bat
Comando /?
Los signos /? detrás de un comando, hacen que se muestre la información de dicho comando.
5. Comandos If y Set
El resultado es:
Código:
Batch es un lenguaje scripting
Lo que hacemos con el comando set es identificar una cosa con otra, en este caso Batch con
variable y scripting con variable2
·Con el modificador /p, damos la opción 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:
Código:
La variable es igual a hola
*Si 'saludo' lo hubiéramos igualado a otra cosa diferente, el programa no mostraría nada porque
'saludo' no se iguala a ninguna de las dos condiciones.
#Parámetros de If
El resultado es:
Código:
El numero es igual a 10
Vemos que SI existe el archivo que hemos propuesto, seguidamente nos muestra:
Código:
El archivo file.bat existe en la ruta C:\
De lo contrario...
Resultado:
Código:
El archivo file.bat no existe en la ruta C:\
If y else
*Como bien vemos, la variable 'var' posee la palabra pasqui, por lo tanto nuestra condición propone
que si la variable 'var' es igual a Manoel muestra:
Código:
La variable es Manoel
· Por lo tanto, podemos decir del parámetro else, que significa " SI NO ". El comando que va
después de esle, se ejecuta siempre que la condición propuesta sea errónea.
*Con los corchetes comprobamos si el usuario a insertado algún dato en la variable 'variable'.
*Podemos utilizar cualquier símbolo, letra o número para comprobar esto.
If %errorlevel%
"Cada orden externa de ms-dos genera un código de salida a su término indicando si pudo
realizarse satisfactoriamente.
Generalmente un código de salida 0 indica que no hubo ningún problema y un código 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 código de salida es igual o superior al
especificado detrás de ERRORLEVEL.”
·Otras variables que también podemos utilizar son %time% y %random%... por ejemplo
·Sustitución de carácteres.
*En este código se ve que modifiqué el númerode pelotas que tenía Manuel.
Ejemplo:
Véase el siguiente código
Código:
set var=12/11/2010
echo %var:~3,2%
pause>nul
El echo nos mostrará los 2(b) carácteres después del 3(a) carácter, por lo tanto, el echo nos mostrará
el mes de la fecha guardada en la variable var.
5.3. Operaciones aritméticas.
·Lo primero que debo decir, que BATCH NO TRABAJA CON DECIMALES.
+ Sumar
- Restar
/ Dividir
* Multiplicar
^ Elevar a un exponente
5.4. Criptografía.
Cuando nosotros instertamos un valor en una variable (obviamente con set) lo que estamos
haciendo es asignar un nombre (la variable) a un valor.
Código:
set variable=valor
Como podemos apreciar, nosotros "escondemos" 'valor' dentro de otro texto llamado "variable".
Bien pues este es nuestro punto de partida. Veamos un simple código el cual nos pida una
contraseña para acceder al archivo.
Código:
set pass=Introduzca el password:
if %pass%==texto (echo correcto) else (echo incorrecto)
Como vemos, cualquier persona iniciada en batch sabría cual era la contraseña (obviamente, texto).
Con lo cual vamos a utilizar 3 métodos para encriptar texto.
Los métodos que vamos a utilizar son: Extracción de carácteres, sustitución de carácteres y
parámetros.
(Los métodos de sustitución y extracción de carácteres los hemos visto en el apartado 5.2.)
·Párametros
El signo % seguido de un número (del 1 al 9) son las parámetros 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
línea
Código:
echo Hola %1
Ya con estos tres métodos en mente nos disponemos a estudiar algunos códigos que os propongo:
Código #1
Código:
@echo off
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)
Código #2
Código:
@echo off
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)
Pues con estos tres métodos y alguno más podremos crear un 'crypter', hacer crackme's... Todo
depende de nuestra mente
5.5. Polimetría.
· La polimetría, en batch, es la combinación de dos o más variables entre si. Veamos un simple
ejemplo (el mío por excelencia)
Código:
setlocal enabledelayedexpansion
set "function=variable"
set /p n=Indique el numero de carácteres a extraer:
set function=!function:~1,%n%!
echo %function%
Como podemos observar, he metido una variable (%n%) dentro de otra variable (%function%). En
este caso la he utilizado para extraer un cierto número de carácteres definidos por el usuario. He
utilizado el comando Setlocal + valor de enabledelayedexpansion para mandarle a mi archivo .bat
que habilite la expansión de variables. Asique cómo podemos ver, la polimetría consiste en insertar
una variable dentro de otra. ¡Esto puede sernos realmente útil a la hora de programar!
En pantalla se imprimiría:
Citar
p
py
pyx
pyxo
pyxol
pyxolo
6. Bucles.
· Los bucles, en batch, son trozos de códigos que se repiten a lo largo de la ejecución del archivo
batch.
¿Cómo se hacen los bucles?
Código:
:etiqueta
echo hola, esto es un bucle infinito
goto etiqueta
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
pyxolo
y luego se cerrará.
¡Ahora está todo en vuestras manos y vuestra mente!
7. Trabajando con archivos.
Estos son los comandos principales para el manejo de archivos y directorios:
MD
Código:
md directorio
Crea un directorio
Código:
cd carpeta
PUSHD
Código:
pushd directorio
Lo 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.
Código:
pushd directorio
popd
Primero nos moveríamos al directorio 'directorio' y luego con popd volveríamos al directorio
inicial.
DEL
Código:
del /parámetros "rutadelarchivo"
Con del podemos borrar archivos y utilizando los parámetros decidiremos como lo/s borraremos
Código:
del /f /q /s "%homepath%\desktop\file.exe"
Borra todos los archivos .txt del directorio "%homepath%\desktop\pyxolo" y subdirectorios sin
pedir confirmación. Si utilizamos también * (comodín global) en la extensión, entonces borraremos
todos los archivos de dicho directorio
Código:
del /f /q /s "%homepath%\desktop\pyxolo\*.*"
ATTRIB
Código:
attrib +-parámetro archivo"
Con este código establecemos el atributo de oculto a todos los archivos .txt del directorio
"%homepath%\desktop\pyxolo"
Código:
attrib -h "%homepath%\desktop\pyxolo\*.txt"
Con este código quitamos el atributo de oculto a todos los archivos .txt del directorio "%homepath
%\desktop\pyxolo"
REN
Código:
ren "archivo_a_renombrar" "archivo_nombrado
XCOPY
Código:
XCOPY origen destino
Ejemplo:
Código:
FOR %%x IN (archivo1.txt archivo2.exe archivo3.ini) DO del /f /q %%x
Código:
FOR %%var IN (d*) DO echo %%var
Lo que hacemos con el for es que nos muestre todos los archivos que comiencen por la letra "d" en
el directorio predeterminado o el especificado por cd\push o popd
El modificador /L :
Código:
For /L %%x in (1,3,30) Do echo %%x
El conjunto es una sucesión de números que va desde inicio hasta fin y que
aumenta (o disminuye) en función de lo especificado en el paso. Así (0, 2, 10) generará la sucesión
0 2 4 6 8 10 y (10, -1, 5) generará la sucesión 10 9 8 7 6 5
El modificador /D :
Código:
FOR /D %%dirx in (m*) DO echo %%dirx
El modificador /D sirve para mostrar directorios... En la línea del anterior for nos muestra todos los
directorios que comiencen por la letra "m".
OPCIONES
Citar
· eol -> Todo lo que esté despues de éste carácter (especificado con eol) será ignorado (para cada
linea)
· delims -> Delims nos sirver para separar strings, si no se coloca esta opción, se usarán como
separadores "espacio" y "tab"
· tokens -> Con tokens especificamos qué segmentos, delimitados por "delims", serán 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 séptimo, seguirá has el noveno. Luego saltará al
14, salta al dieciseis hasta que se acaben los segmentos.
Ejemplo:
Código:
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.
Este tutorial está sujeto a la Licencia Creative Commons.
Tutorial Programación Batch
Tutorial Programación Batch -completo- by Manoel Antón Folgueira Hernández (pyxolo) is
licensed under a Creative Commons
Attribution-NonCommercial-ShareAlike 3.0 Unported License
Edición y redacción:
Manoel Antón Folgueira Herández (pyxolo)