Qué puede hacer un fichero bat por usted

Un proceso Batch, es según Wikipedia  un archivo de procesamiento por lotes ,es decir  se trata de archivos de texto sin formato, guardados con la extensión *.bat que contienen un conjunto de comandos DOS. Cuando se ejecuta este archivo bat, los comandos contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas de modo  que cualquier comando DOS, como  vamos a ver en este post ,puede ser utilizado en un archivo batch.
Hay que aclarar Batch que no es un Lenguaje de Programación. Es un archivo de código que contiene comandos del, Shell de Windows, llamado MS-DOS o en las modernas versiones Interfaz de comandos , que en todo caso siempre se pueden ejecutar desde Inicio->Ejecutar->CMD.

 

Entendiendo  ficheros bat como archivos de texto ascii sin formato, guardados con la extensión *.bat que contienen un conjunto de comandos DOS,  tenemos al menos dos maneras de ejecutar comandos Batch :

  • Desde el Shell de Windows.
  • Escribiéndolos en un archivo de texto con extensión .bat y luego ejecutarlo.

Comenzaremos creando un Simple y clásico «Hola Mundo», pero  Hola Mundo en Batch,  escribiendo en un archivo de texto el siguiente código.

@echo off echo Hola Mundo pause exit

Ahora guardemos el archivo como Nombre.bat y lo ejecutamos. Nos aparecerá una pantalla negra que dirá «Hola Mundo», luego una linea abajo dirá «Presione una tecla para continuar»

Explicación comandos:

  • echo:Imprime un texto en pantalla, que es el texto que viene después (el que le pasamos como parámetro), que en este caso es «Hola Mundo». Echo significa eco, por lo mismo «@echo off» elimina el eco, la repetición de la ruta en la que nos encontramos en cada línea código.Cabe mencionar que echo. (Echo seguido de un punto)sirve para saltarse una línea.
  • pause:Como bien se lee, pausa la ejecución del código. Además muestra el texto «Presione una tecla para continuar»
  • exit:Cierra la ventana de comandos.

Para dejar más en claro cual sería la diferencia de no ocupar la linea @echo off la imagen de a continuación muestra como se vería la pantalla sin esta linea.

Ahora aprenderemos algunas otras  funciones de Batch:

  • CD o CHDIR:Si ha trabajado en PHP, le sera fácil entender este concepto. Sirve para cambiar de Directorio o Mostrar el nombre del actual. Para usarlo, CD o CHDIR seguido de la ubicación del directorio al cual nos moveremos.Ejemplos:  cd «C:\»   ,   chdir «C:\» : ambos ejemplos  hacen exactamente lo mismo, cambian al Disco C
  • COPY:Sirve para copiar uno o más archivos a otro destino.Su sintaxis es la siguiente:Copy «Dirección del archivo» «Nueva dirección». Ejemplo: Copy «C:\archivo.txt» «C:\archivo2.txt» .   Aquí copiaríamos un archivo del Disco C llamado «archivo.txt» como «archivo2.txt»,  Para acortar un poco podríamos usar: cd «C:\»Copy «archivo.txt» «archivo2.txt» Donde primero cambiamos de directorio al Disco C con cd «C:\» y luego al copiar no tenemos que especificar que esta en el Disco C ya que ya nos encontramos en el.
  • DEL:Sirve para eliminar uno o más archivos. Su sintaxis es: Del «ARCHIVO» .También se puede añadir: del /f /q «archivo» .Donde no pide confirmación de eliminación (/q) y fuerza al archivo a borrarse ( /f )
  • Move:Sirve para mover un archivo. Su sintaxis es: Move «Dirección Archivo» «Nueva Dirección»
  • Cls:Sirve para limpiar el contenido de la pantalla: Ejemplo:@echo offecho Hola, Cuando pulses la tecla se borrara el contenido y cambiara por otro.pauseclsecho ¿Ve?pause exit.Si quisiéramos averiguar más sobre las funciones, o conocer algunas nuevas por nuestra propia cuenta podemos escribir en el Shell el nombre del comando seguido de /? y aparecerá toda la información necesaria.

Podemos poner en práctica esto de la siguiente manera:

  • Abramos el Shell de windows:Inicio->Ejecutar-CMD
  • Una vez abierto escribamos:echo off   (Para eliminar el eco.)
  • Luego para borrar el contenido de pantalla escriba: cls
  • Ahora veamos la ayuda de la función Copy:copy /?
  • Cerremos la ventana:  exit

Ahora vamos a crear un Batch  muy sencillo  que copie un archivo, luego lo mueva a otro directorio, borre el original y vuelva a copiar el copiado.

En la carpeta donde creará el archivo .bat cree  un archivo de texto llamado copiame.txt. En él, escriba lo que quiera. Este será el archivo que copiaremos.

Ahora el Batch:

Código :

@echo off

echo Hola, Copiaremos un archivo

pause

copy «copiame.txt» «copiado.txt

«move «copiado.txt» «C:\copiado.txt»

del «copiame.txt»

cd «C:\»

copy «copiado.txt» «copiado2.txt»

exit
Guárdelo en la carpeta como NombreQueTuQuieras.bat, y ejecútelo.

Lo que ha hecho la cadena de instrucciones es más o menos lo siguiente: Primero apagamos el eco, luego imprimimos en pantalla «Hola, Copiaremos un archivo»
Pausamos el intérprete para que no siga de largo. A continuación, copiamos el archivo «Copiame.txt» y su copia se llamará «copiado.txt«. La movemos a la carpeta raíz del disco C, y eliminamos el original.Por ultimo cambiamos de directorio al disco C, copiamos la copia y cerramos el Batch. Después de que ejecutemos el Batch, si vamos al Disco C, veremos que hay dos nuevos archivos de texto: uno llamado copiado.txt y otro copiado2.txt. También si vamos a la carpeta del Batch, veremos no está el archivo de texto original, «copiame.txt».

Creación de nuevos archivos:

Con Batch podemos crear otros archivos. Para ello, tenemos que escribir algo como esto:

Código :

 echo TEXTO DE PRIMERA LINEA > nombre.extensión

echo TEXTO SEGUNDA LINEA >> nombre.extensión

echo TEXTO SIGUIENTE LINEA >> nombre.extensión

Al escribir echo seguido de un texto y el signo > creamos un archivo con el nombre que siga.
Si ocupamos un echo seguido de un texto y el doble signo > (>>) se escribirá en la siguiente linea vacía del archivo que prosiga.

Hagamos la prueba:

Código : echo Creando un Archivo de texto > nuevo.txt

echo Esta es la Segunda linea >> nuevo.txt

echo Y esta es la Siguiente >> nuevo.txt

echo Esto esta genial >> nuevo.txt

Si ejecutamos eso, la pantalla negra se abrirá y cerrará, p ero en la carpeta en la que está nuestro batch se abra creado un nuevo archivo «nuevo.txt» que si lo abrimos, dentro estará escrito lo que especificamos.

Personalizando el SHELL

Seguro que no le gusta mucho el aspecto del Shell.Aquí veremos como personalizarlo un poco.

  • COLOR:Con la función color podemos cambiar los colores de fondo y las letras. Siendo su sintaxis:COLOR AB   Donde A= El color de el Fondo y B= Color de las letras. Para ver todos los colores ve el MS-Dos y escribe color/?
  • TITLE:Para cambiar el título de la barra de tareas solo escribe:Title Loquequierascomotitulo 
  • Pause Personalizado:¿No le gusta que al poner pause salga «Presione una tecla para continuar…»? Pues si escribe «pause>nul» no aparecerá ni un texto.Entonces si anteponemos un mensaje, quedaría así.Código :echo Aprieta cualquier tecla para seguirpause>nul  Además puedes jugar con los caracteres.
  • TASKKILL :¿Alguna vez ha presionado CTRL+ALT+DELETE?Si lo hace se abre el Administrador de tarea. En la pestaña procesos salen algunos procesos que están andando en tu pc, haciéndoles clics y apretando «terminar proceso» lo puedes acabar.Con batch eso es muy fácil, se usa la función:Taskkill (No funciona en todos los pc, para ver si esta disponible escribe taskkill/?)Su sintaxis es:taskkill /f /im proceso.exe donde  /f Fuerza el término del proceso.
  • START . Ahora abramos ese proceso que cerramos. Para abrir procesos se usa la función Start que funciona así:start proceso.exe. También puede abrir paginas web con su explorador predeterminado.Ejemplo1:start www.google.es (Se abrirá su Explorador de Internet en Google.)

 

VARIABLES:

Ahora aprendamos a declarar variables. Para crear una se escribe:

set NOMBREVARIABLE = VALOR
Para llamarla debemos escribir su nombre entre los signos %% ,por ejemplo: @echo offset Nombre= Javier Letelier Ruizecho %Nombre%pause
Para cambiar el valor solo debemos hacer esto:set Nombre= Nuevo Valor
Si quiere que su Variable sea dinámica, osea que el Usuario la elija anteponga /p por ejemplo  set /p Nombre=Escriba su Nombre:    . Donde el Batch se pausara solo mostrando el Mensaje que va luego de «=» dejando que se escriba algo.
También podemos multiplicarlas, sumarlas, etc… con /a:  set numero1=2ser numero2=43set /a suma= %numero1% + %numero2%echo %suma%pauseexit

Uso de etiquetas
Como bien sabemos la lectura de los códigos Batch se leen de una manera lineal, pero existe una forma para que el Batch se salte lineas, o vuelva a alguna anterior. Esto se logra con Etiquetas y la función GOTO.
Para crear una etiqueta solo debemos escribir: :nombreEtiqueta
Dos punto (:) seguido del nombre que le daremos a la etiqueta. De esta manera el GOTO funciona escribiendo  GOTO seguido del nombre de la etiqueta, como vemos en el siguiente ejemplo.

Código :

@echo off

goto :mietiqueta

echo ¿Por que me saltan?

:MiEtiqueta

echo Hola, esta es la etiqueta y nos saltamos una parte del codigo.

pause>nul

exit

 

Condicionales:
El primer condicional que veremos el más usado. IF: Se puede ocupar para comparar, cadenas, números o para saber si existen archivos.
Ejemplo de sintaxis

  • General:  if %cadena1% == %cadena2% OrdenAEjecutar    Que se podría leer de la siguiente manera. Si cadena1 es igual a Cadena2 ejecutemos la Orden OrdenAEjecutar.
  • También existe el NOT para ver si no son iguales.  :if not %cadena1%== %cadena2% ejecutarAccion 
  • Para saber si un archivo existe, se usa: if exist «NombreDelArchivo» AccionAEjecutar
  • También para ver si NO existe: if not exist «NombreDelArchivo» AccionAEjecutar

 

No solo se puede ocupar el signo == para hacer comparaciones.

  • EQU, que es el equivalente a ==
  • NEQ, Sirve para cuando queremos ver Desigualdad.
  • LSS, Para verificar si el numero es Menor
  • LEQ, Para verificar si es menor o igual.
  • GTR, Si es mayor
  • GEQ, Si es Mayor e igual.

Bucles
FOR: Nos sirve para repetir un comando varias veces, en distintas variables.Unejemplo, es este:

for /L %%i IN (0,1,21) DO (echo %%i)
En donde /L es para especificar que nuestro for se basara en un conteo de números.Aquí se repetirá un Echo, que imprimirá números del 0 al 21.
%%i sera el nombre de la variable que almacenara datos

in (0,1,21) aquí especificamos que se repetirá del 0 al 1 y del 1 al 21.
do (echo %%i) Esto es la función que se ejecutara en cada repetición del comando, en este caso un echo que imprimirá la variable.

Otro uso que puede ser aplicado en el FOR es el listado de carpetas o archivos, como veremos a continuación:

Ejemplo1

@echo off

FOR %%x in (a*) DO echo %%x

pause
Este código, listaría todos los archivos que comienzan con A.¿Por que? * (asterisco) es un signo comodín, por lo cual al poner a*, estamos diciendo cualquier archivo que tenga una A delante y luego cualquier cosa.

Ejemplo2

@echo off

FOR %%x in (*.jpg) DO echo %%x

pause

Es otro ejemplo del uso de comodín, para listar archivos con extensión común  Aqui nos estaria listando todos los archivos que tengan la extensión .jpg

Ejemplo3

FOR /D %%x in (a*) DO echo %%x

Es casi lo mismo anterior, tan solo que al indicar /D solo se aplica a directorios.

Mas ejemplos:
Si quisiéramos que se listaran los directorios, juntos a los directorios que tienen estos dentro se ocupa /R
FOR /R /D %%x in (a*) DO echo %%x

Si quisiéramos listar todos los documentos que están dentro de una carpeta contando los que están dentro de carpetas se ocupa solamente /R (Sin /D)
FOR /R %%x in (a*) DO echo %%x

 

 

Creación de Menús:
Como ya vimos Condicionales y Etiquetas les enseñare una manera de hacer Menús.
Comenzaríamos indicando las instrucciones y las opciones, de esta manera:

Código :

@echo off

:Menu

cls

echo Seleccione su opcion tecleando el numero respectivo.

echo.

echo 1. Primera Opcion

echo 2. Segunda Opcion

echo 3. Salir
Luego para seguir ocuparíamos esto:

Código :

set /p var=

if %var%==1 goto :Primero

if %var%==2 goto :Segundo

if %var%==3 goto exit

if %var% GTR 3 echo Error

goto :Menu
Con esto damos una variable en la que se guardara el numero insertado para luego ser verificado por los condicionales, si el numero es mayor que 3 nos avisara que no existe esa opción. También al principio cree una etiqueta para que se pueda volver

al menú y un «cls» para limpiar la pantalla.
Para terminar creamos las respectivas etiquetas.

Código :

:Primero

cls

color a

Echo Esta es la Primera Opcion

Echo Precione una tecla para volver al menu

Pause>Nul

goto :Menu

:Segundo

cls

color 1a

Echo Esta es la Segunda Opcion

Echo Precione una tecla para volver al menu

Pause>Nul

goto :Menu
Quedando para terminar nuestro codigo así:

Código :

@echo off

:Menu

cls

echo Seleccione su opcion tecleando el numero respectivo.

echo.

echo 1. Primera Opcion

echo 2. Segunda Opcion

echo 3. Salir

set /p var=

if %var%==1 goto :Primero

if %var%==2 goto :Segundo

if %var%==3 goto exit

if %var% GTR 3 echo Error

goto :Menu

:Primero

cls

color a

Echo Esta es la Primera Opcion

Echo Precione una tecla para volver al menu

Pause>Nul

goto :Menu

:Segundo

cls

color 1a

Echo Esta es la Segunda Opcion

Echo Precione una tecla para volver al menu

Pause>Nul

goto :Menu
Bueno, con eso les basta para imaginarse como crear sus menús personales.
Como vieron puede cada sección tener su color, incluso puedes cambiar la barra de titulo.

 

Apagado y Reinicio del Pc:
Una cosa muy interesante que puedes hacer con Batch es Apagar y Reiniciar tu Pc, incluso programarlo para que apague a la hora que desee.
Es notablemente fácil mediante el comando shutdown que se ocupa de la siguiente manera el apagado.
shutdown -s -t Tiempo -c «Comentario»
Donde -s significa que lo apagaremos, -t debe ir seguido de los segundos que demorara apagar.Si en vez de ocupar -s usas -r el PC se reiniciara.También puede forzar el cierre de los programas, para que no de tiempo de guardar nada. Tan solo ocupando -f

En windows XP mostrara un contador, con el comentario que va luego de -c, pero en Windows 7 y 8  no abrirá ni un contador, solamente saldrá una alerta con el Comentario, que ni siquiera es obligatorio.

Puedes cancelar el apagado (Antes de que el contador termine) solamente escribiendo shutdown -a ya sea en un archivo de texto con extensión bat, como en el mismo Shell.

Ejemplo:

shutdown -s -t 999999 -c «Esto se esta apagando»

Tendrá suficiente tiempo para ejecutar el siguiente código. (11 días )

 

Otras utiles comandos:
Para terminar hablaremos de pequeñas funciones que pueden ser de utilidad.

  • Leer archivos externos:Para leer un archivo externo con Batch, como un archivo de texto por ejemplo. Se usa el siguiente código:type «NombreDelArchivo.txt»
  • Insertar al Registro:Insertar al registro tu Batch puede ser muy útil, la verdad yo no entiendo mucho del registro pero leí un poco y aquí tienen un ejemplo que se encuentra a ser sincero en muchas web. Donde aremos que nuestro batch se ejecute con el Sistema. Ejemplo REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v MIBATCH.bat /t REG_SZ /d
  • Con la función REG ADD Agregamos algo al registro. Con otros comando podemos borrar.Lo que sigue es la «Dirección» de donde insertaremos el registro que en este caso sera para que nuestro batch se ejecute al iniciar Sesión. En medio de toda la dirección se puede leer MIBATCH.bat yo puse el nombre del Batch pero también se puede poner cualquier otra cosa. Más adelante donde dice C:\MIBATCH.bat, es la dirección completa de donde esta nuestro Batch.
  • Msg :Esta función tiene otras utilidades, pero les enseñare esta que no funciona en todos los PC.Sirve para abrir una alerta con un mensaje su utilización es la siguiente:msg * EsteEsMiMensaje
  • AT  :Esta es una de las que más me gusta, es para programar alguna acción a cierta hora. Ejemplo: At 20:00 msg * Son Las 8 de la noche.Con esto a las 20:00 nos aparecerá un mensaje que nos dirá que son las 8 de la Noche. También puedes programar un apagado o cualquier Cosa.Si la hora que das ya paso, se tomara como para el día siguiente.

 

En Batch las Mayúsculas y Minúsculas no se diferencian. Batch en algunos casos SI reconoce entre mayúsculas y minúsculas, como en el caso de la variable %%i si esta se llamara %%I no seria reconocida como la misma.

Deja una respuesta