BATCH FOR DUMMIES

Seguimos con esta serie de post más teóricos, pero esta vez vamos con algo de lo más básico imaginable, como son los comandos de windows y el procesamiento por lotes.

En 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 instrucciones MS-DOS

Comandos Básicos

Hay una serie de comandos básicos de MS-DOS con los que trabajaremos constantemente que son los siguientes:

ComandoFunción
HELPMuestra la ayuda (Obvio)
DIR Muestra el directorio
TREE Muestra el árbol de directorios
CD Cambiar directorio
Mkdir o md Crea un directorio
Rmdir Borra directorio
Deltree Borra árbol
Doskey Guarda el historial de los comandos introducidos (MS-DOS)
Chkdsk Chequea el disco
Format Formatear (Obvio)
Fdisk / DiskPart Muestra el particionado del disco. En windows 10 es DiskPart
Attrib Ver atributos
Type Muestra contenido de un archivo
Rename o ren Cambia el nombre de un archivo
CopyCopia archivos
xcopy Realiza copia de archivos y subdirectorios
clsLimpia la pantalla
FindBusca en un archivo

Operadores especiales

OperadorSignificado
* Operador especial que implica Todo.
? Operador especial que implica una letra cualquiera.

Ejemplos:

copy *.bat A: (Esto copiaría todos los archivos cuya extensión sea .bat a la unidad A:)

copy hola.* A: (Esto copiaría todos los archivos que se llamasen hola con cualquier extensión a la unidad A:)

copy hola.ba? A: (Esto copiaría todos los archivos que se llamasen hola y cuya extensión sea las dos primeras letras ba y la ultima cualquiera,ej; hola.baz , hola.ba3, hola.bau a la unidad A:)

copy hola.??a A: (Esto copiaría todos los archivos que se llamasen hola y cuya extensión las dos primeras letras sean cualquieras y la ultima se a, ej; hola.hga, hola.iua, hola.rta, a la unidad A:)

Redireccionamientos

Hay dos tipos de redireccionamiento de salida o de entrada

Redirecionamiento de salida: Saca la salida de texto de un programa a un archivo o la elimina enviandolo a NUL

Como vemos en el ejemplo hemos redirecionado la salida del comando (que en este caso era lo de presione una tecla para continuar ) a NUL ,aunque tambien podiamos haber puesto que lo redirecione a un archivo  si queremos conservar esa salida

Si hacemos el redirecionamiento de esta forma a un archivo esto machaca el contenido del archivo 

La forma de que no lo machaque es haciendo el redirecionamiento con >>, lo cual significa que conserve lo que tenia mas lo añadido.

Redirecionamiento de entrada: Mete una cadena de texto a un programa 

En este ejemplo utilizamos el comando sort para ordenar y el modificador /r (reverse) para indicar que queremos que nos ordene al reves la cadena de texto introducida mediante el archivo hola.txt

 ECHO

El comando Echo cumple 3 funciones distintas segun el uso:

echo «texto»Muestra el texto
echo. Salto de linea (como una linea de texto vacia lo interpreta)
echo off/on Activa y desactiva el eco

¿Que es eco? El eco consiste en la repeticion producida al mostrar el comando al ejecutarlo,con el siguiente ejemplo lo entendereis perfectamente

Formas de desactivar el ECO:

  • 1º Poniendo antes del comando @
  • 2º Poniendo ECHO OFF

Como tambien es de interes quitarle el eco al echo off se suele poner @Echo off

Filtros 

Para introducir un filtro de como queremos que se muestre la salida debemos poner una tuberia | (Este simbolo) despues del comando. Los filtros mas habituales son:

FiltroFunción
find Busca la cadena de texto
sort Ordena
more Muestra hasta que se llene la pagina y para hasta que pulses un boton y luego sigue

Aqui dejo unos ejemplos, podeis ver como varia la salida segun que filtro:

Parametros

Un parametro es una variable cuyo valor se fija a voluntad.Los parametros en MS-DOS se escriben a continuacion del archivo.bat 

Ejemplo:

En MS-DOS podemos establecer hasta nueve parametros,utilizando la siguiente simbologia %1 %2 %3 %4 %5 %6 %7 %8 %9 .Si pusieramos %10 el ordenador lo interpretaria como el parametro uno + 0 -> %10 = %1+0 , si %1 es Hola , %10 seria Hola0

Los parametros nos permiten realizar un monton de acciones dado que nos permite fijar el valor que deseamos a voluntad, veamos un ejemplo practico

Ahora lo ejecutaremos:

Condiciones

Para establecer una estructura condicional utilizarimos IF (El cual se puede traducir por el si condicional). Estas estructuras condicionales son muy similares a la gramatica inglesa del primer condicional. Para entender estas estructuras condicionales me basare en la estructura de la gramatica inglesa.

Como se ve en esta imagen podemos distinguir dos partes la condicion y la consecuencia. La particula if va ligada a la condición. Ahora veremos algunas de las particulas que siguen al IF en MS-DOS y su significado:

IF EXIST Si existe
IF NOT EXIST Si no existe
IF  » » == » » Si lo introducido en el primer lado de la igualdad es igual a lo segundo
IF NOT «»== «» Si lo introducido en el primer lado de la igualdad  NO es igual a lo segundo
IF ERRORLEVEL Lo veremos más adelante con el choice esta opción

Y en cuanto a la parte del resultado o condicion esta se pondría a continuación, ahora mostrare algunos ejemplos:

IF %1 NOT EXIST GOTO :ERROR -> Si el parametro uno no existe vete a error
IF "%3"=="" GOTO :dosparametros -> Si el parametro 3 esta en blanco , es decir no hay parametro GOTO :dosparametros

Tener en cuenta que este tipo de estructuras va muy ligada a parametros , variables y etiquetas. Normalmente los parametros y variables a la parte de la condición y las etiquetas en la parte del resultado

Etiquetas

¿Que es una etiqueta? Es un conjunto de caracteres que sirven para identificar instrucciones o datos.En MS-DOS las etiquetas se establecen con : y el nombre da la etiqueta. Ejemplo :Etiqueta1, el nombre de las etiquetas son arbitrarios.Una de las principales utilidades que tiene es hacer «saltos» en el codigo es decir ir directamente (GOTO) a la etiqueta sin interpretar el codigo anterior

Ejemplo:

Preguntas

En MS-DOS es posible preguntar al usuario que quiere hacer utilizando la opción CHOICE. CHOICE cuenta con varios modificadores que hay que saberse:

ModificadorFunción
/C 1234 Establece como opciones 1,2,3,4
/T 10 Establece un temporizador que eligira la opcion por defecto si no ha elejido nada en 10 segundos.
/D 1Establece la opcion por defecto
/N Oculta las opciones en la pregunta y el simbolo de ? final 
/MMuestra un mensaje personalizado

Ejemplo de uso:

CHOICE /C 1234 /T 10 /D 1 /M "Que opcion desea ejecutar" 

Pero tal como esta puesto ahora no haria nada el codigo ,ni hara algo diferente segun la opcion que pulsemos . Para ello esta otro uso de la particula IF , IF ERRORLEVEL.

IF ERRORLEVEL va inmediatamente despues del choice y se ha de poner según LA POSICIÓN (no la opción).

¿Y el IF ERRORLEVEL 0? Este se produce cuando pulsamos control+c para cancelar la ejecucion del archivo por lotes y luego  le decimos que no queremos cancelar la ejecución por ello siempre es conveniente poner en IF ERRORLEVEL 0 una etiqueta al principio para reiniciar la ejecucion o aun mensaje de error.

LLamadas a otro .bat

Hay dos forma de ejecutar otro programa .bat desde un bat y son las siguientes:

  • La primera poniendo el nombre del archivo . bat o su ruta directamente (con path)

Esto haria que se ejecute el archivo Dos.bat pero la linea de abajo de ya he vuelto no se interpretara

  • La segunda usando el comando CALL

En este caso tras ejecutar Dos.bat se ejecutaria luego el Echo ya he vuelto del segundo bat.

Bucles FOR

Esto quizas sea ,una de las cosas con sintaxis mas complejas de MS-Dos . Los bucles FOR permiten ejecutar un comando para cada uno de los elementos especificados en la lista:

FOR  %NombreVariable     IN  (lista)  DO  comando        
<-- desde línea de comandos
FOR  %%NombreVariable IN  (lista)  DO  comando        
<-- dentro de archivos BAT

NombreVariable:  Un nombre de variable de un único carácter, que se utilizará para recorrer los archivos de la lista,va tomando los valores de cada elemento de la lista.

OjO: La variable diferencia si es MAYÚSCULA o minúscula.

(lista): Especifica un conjunto de elementos archivos separados por coma, punto y coma o espacio en blanco.Si en la lista aparecen comodines ( ? o * ) el comando se ejecutará para cada uno de los archivos que cumplan la expresión regular.

Ejemplo 1: 

FOR  %%A IN  (*.*)  DO  ECHO %%A 

Si hubieramos puesto:

FOR  %A IN  (*.*)  DO  ECHO hola 

En este caso el comando a ejecutar sera echo hola y la lista actuara como un mero contador ya que el comando se ejecuta para cada elemento de la lista.

El principal inconveniente de esto es que solo permite ejecutar un comando por cada archivo por ello ,para poder ejecutar más el comando a poner en do suele ser una llamada a otro bat:

FOR  %%A IN  (*.*)  DO  CALL OTROBAT

Ejemplo: Un bat que nos liste y nos muestre el contenido de todos los archivos .txt de un directorio:

El contenido del primer bat seria

(Como podemos ver al realizar la llamada pasamos la variable como parametro, que al otro archivo le llegara como si hubieramos puesto otrobat.bat parametro )

El contenido de otrobat.bat

Y el resultado de la ejecución:

Y hasta aquí llega esta guía básica de archivos batch , en otro post ya veremos un uso más avanzado de esto como puede ser usar esto para realizar modificaciones en el registro,en cuentas de usuarios, o liarla de formas varias en entornos de postexplotación y un largo etcetera

Bye!!

Deja un comentario

Esta web funciona gracias a WordPress.com.

Subir ↑

Diseña un sitio como este con WordPress.com
Comenzar