Vous êtes sur la page 1sur 30

PROCESOS BATCH O BAT O POR LOTES

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 instrucciones MS-DOS.
Cuando se ejecuta este archivo, las órdenes contenidas son ejecutadas en
grupo, de forma secuencial, permitiendo automatizar diversas tareas. Cualquier
orden reconocible por MS-DOS puede ser utilizado en un archivo batch.
Esta es la forma de automatizar procesos (copiar, pegar, renombrar y enviar
datos) en MS-DOS. De este modo, evitamos procesos rutinarios y monótonos,
acelerando los mismos. Tiene la funcionalidad de conectarse con otras
interfaces por línea de comandos.
Un tipo batch es un archivo de texto que contiene órdenes a ejecutar en un
intérprete de órdenes propio de DOS o OS/2. Cuando es iniciado, un programa
shell —típicamente command.com o cmd.exe— lo lee y ejecuta, generalmente
línea a línea. De este modo, se emplea para ejecutar series de comandos
automáticamente. El hecho de que funcione solo para MS-DOS lo hace muy
limitado. Su extensión es .bat o .cmd.
ÓRDENES DE PROCESAMIENTO POR LOTES
Hay varias instrucciones especiales para este tipo de archivos:
Call
Esta orden realiza, desde un archivo batch, una llamada a la ejecución de otro
archivo del mismo tipo. El primer archivo no finaliza su ejecución al realizar la
llamada.

CALL [unidad_disco:][path]nombre_archivo [parámetros]


Donde:
[unidad_disco:][path]nombre_archivo es la ruta al archivo batch llamado (debe
ser un archivo *.bat) y
[parámetros] puede ser cualquier tipo de información que necesite el programa
llamado que pueda pasarse en línea de comandos.

Choice
Ofrece a los usuarios una entrada de datos para que pueda escoger una
opción, y espera hasta que ésta tenga lugar.

/C[:]letra, especifica las letras que indicarán las opciones del usuario. Si las
específicas separadas por comas, aparecerán entre corchetes seguidas de un
interrogante. Si no se especifican, se usara YN (si, no) por defecto.
/N: evita que se muestre el prompt de usuario.
/S: hace que discrimine entre entrada de letras mayúsculas o minúsculas.
/T[:]c, nn: introduce un tiempo de espera antes de ejecutar la acción por
defecto. Con los siguientes posibles valores:
c: señala que carácter será usado como opción por defecto después de nn
segundos. Solo puedes indicar uno de los caracteres especificados con el
modificador /C.
nn: indica el número de segundos de pausa. Valores entre 0 y 99.
CHOICE [/C[:]letra] [/N] [/S] [/T[:]c, nn] [texto], puedes especificar un texto que
aparecerá antes de la entrada de datos. No hace falta que se entrecomille,
salvo que dicha cadena de texto incluya una barra /.
Atención: Los sistemas operativos Windows 2000, Windows xp o posteriores no
trabajan con este comando. Sólo lo aceptan por compatibilidad con otros
programas.

Echo
ECHO [ON|OFF] echo [mensaje] Parámetros
ON|OFF: activa o desactiva el volcado de texto. Para conocer el estado actual,
usar ECHO sin parámetros.
Mensaje: el texto a mostrar.
echo.

Set
Da valor a una variable general o de entorno. Ejemplo: set nombre=jake

Parámetros:
set /a Da valor a una variable utilizando operaciones aritméticas
Ejemplo: set /a número=2+2 Lo que devolvería el valor 4
set /p Permite la entrada de datos por parte del usuario (prompt), el valor
introducido por el mismo define la variable.
Ejemplo: set /p nombre=Introduce tu nombre Esto definiría la variable
%nombre% con el valor introducido por el usuario.
Nota: Todo lo que vaya después del signo de = en un set /p se verá en
pantalla.

For
Ejecuta una instrucción sobre un grupo de archivos. Puede utilizarse en la línea
de comandos o en un archivo bat o batch:

a) en archivos BAT: FOR %%variable IN (set) DO command [command-


parameters]
b) en línea de comandos: FOR %variable IN (set) DO command [command-
parameters]
Parámetros:

%%variable o %variable: representa una variable que será reemplazada por su


valor. FOR reemplazará %%variable o %variable con la cadena de caracteres
especificados en SET hasta que la instrucción especificada se haya ejecutado
sobre todos los archivos. %%variable se emplea con FOR dentro de archivos
batch, y %variable desde la línea de comandos.
(set), especifica uno o más archivos de texto (o cadenas) que se procesaran
con el comando. Necesita paréntesis.
command, la orden que debe ejecutarse sobre cada archivo especificado en
SET.
[command-parameters], parámetros de la instrucción. Podemos emplear la
orden son cualquiera de sus parámetros habituales.

Goto
Salta la ejecución del programa hacia la línea indicada: GOTO :label
Donde :Label (advierte los dos puntos) es una etiqueta que identifica la línea. 8
caracteres máximo.

If
Permite la ejecución condicional, es decir, sólo se ejecuta la orden si cumple
con la condición introducida.

Sintaxis:
IF [NOT] ERRORLEVEL número comando
IF [NOT] string1==string2 comando
IF [NOT] EXIST nombre_archivo comando
Parámetros:

NOT: La instrucción sujeta a condición se ejecuta solo si esta es falsa.


ERRORLEVEL número: la condición es verdadera sólo si la orden anterior
devuelve un código de salida igual o mayor que el especificado.
command: especifica la orden a ejecutar si la condición se cumple.
string1==string2: La condición se cumple solo si cadena1 es igual a cadena2.
Cadena1 y cadena2 pueden ser cadenas de texto o variables.
EXIST nombre_archivo: la condición se cumple si existe nombre_archivo.
Pause
Suspende la ejecución de instrucciones y presenta un mensaje para que el
usuario presione una tecla para continuar.

pause > nul no muestra mensaje al pausar la ejecución, pero sigue requiriendo
que el usuario presione cualquier tecla para poder continuar.

Rem
Línea de comentario. Podemos usar REM , :: y % comentario %

Shift
Alterna la posición de los parámetros en el archivo bat.
PARÁMETROS PASADOS AL SCRIPT BATCH
El signo % seguido de un número (del 1 al 8) son los parámetros que se
pasaron al invocar nuestro archivo bat. Por ejemplo si tenemos un archivo
saludo.bat con la línea echo Hola %1, si lo invocamos tecleando saludo.bat
pepe presentará en pantalla Hola Pepe. Se usa por ejemplo para pasar
nombres de archivos a un bat que se encarga de borrarlos, moverlos, etc.

El signo %0 representa el nombre del archivo bat en ejecución. El signo %*


representa todos los parámetros que se le pasaron.

::cancelamos el echo para que no moleste


@echo off
::mostramos la ruta y el nombre de este bat
echo estas ejecutando el archivo %0
::si se nos pasó algún parámetro, lo mostramos
if not "%1"=="" (
echo pasaste el/los parámetro/s %*
) else (
echo no pasaste ningún argumento al programa
)
::espera que se pulse una tecla para terminar
pause

Para crear nuestro propio batch, es tan fácil como ir al bloc de notas de
Windows, escribir los comandos/códigos deseados, y al terminar hay que
guardar el archivo con el nombre que queramos acabado en .bat.

Tomaremos el ejemplo la frase "Hola Mundo" para crear nuestro propio batch
en un par de minutos. Algo muy básico y extremadamente simple de hacer.
Abrir el bloc de notas, copiar este código y pegar en el bloc de notas, guardar
con el nombre deseado terminado en .bat y ejecutar.
"Hola Mundo"
@echo off
title Mi primer 'batch'
echo Hola Mundo
pause
exit
.

Ej de código básico seria este de arriba…..

Al no especificar el código de color mediante su comando, el color por defecto


es el color de la consola (cmd.exe), normalmente negro/blanco. Para cambiar
el color solo añadiremos el comando "color" seguido de un espacio y el código
de dos dígitos, de los cuales el primero corresponde al color de fondo y el
segundo a la letra. En este caso el código de color es 07.

Entonces el código quedaría así:

@echo off
color 07
title Mi primer 'batch'
echo Hola Mundo
pause
exit
.

Para saber los colores disponibles y ver sus respectivos códigos, simplemente
abrimos la consola (cmd.exe) y escribimos el comando "color ?" y pulsamos
ENTER. Con esto aparecerá la lista de colores y sus respectivos códigos. Solo
queda elegir los colores que más nos gusten.
Esto es muy sencillo y básico pero hay infinidad de comandos y funciones los
cuales utilizados con inteligencia se pueden obtener multitud de aplicaciones.

Es fundamental e indispensable respetar siempre los espacios, caracteres,


comandos, etc, a la hora de escribir cualquier línea de comando/código por
simple o básica que sea.

/******Esto es lo básico para una simple programación por lotes *********/

[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*.

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.

IF: "Ejecuta procesos condicionales en programas por lotes." Es decir,


Establece condiciones entre variables.
Set: "Muestra, establece o elimina variables de entorno de Windows." Es decir,
que con el comando set podemos ver, crear o borrar variables en Batch.

parametros if

EQU - igual
NEQ - no igual
LSS - menor que
LEQ - menor que o igual
GTR - mayor que
GEQ - mayor que o igual

/********1-bat hola mundo ****/

@echo off
title holamundo
echo hola mundo
pause
echo que facil que es esto
pause
exit

/************ 2-bat interactivo *****/

@echo off
title bat interactivo
echo como te llama
set/p nombre=
echo.
echo hola %nombre%
pause
exit

/************ 3-bat suma *****/

@echo off
title bat suma
echo primer numero
set/p num1=
echo segundo numero
set/p num2=
set/a cal= (%num1% + %num2%)
echo.
echo la suma es %cal%
pause
exit

/************ 4-bat simular ingreso por pasword *****/////

@echo off
title bat simular ingreso por pasword
echo quien eres
set/p nombre=
echo ingresa tu pasword
set/p pass=
if %pass%== **** goto 1
if not %pass%==**** goto 2
:1
@echo off
echo bienvenido %nombre%
echo puede continuar
pause
exit
:2
@echo off
echo pasword incorrecto
pause
exit

/************ 5-bat mitad de 2 numeros ****////

@echo off
title bat mitad de 2 numeros
:principio
echo Entre cuantos numeros quiere encontrar su mitad?
set/p cant=
set/a contador=%cant%
set total=0
if %cant% LSS 2 (goto mal) else (goto ¿?)
:mal
echo Debe indicar un numero mayor o igual que 2
goto principio
:¿?
set/p num=ingresa uno de los %cant% numeros
set/a total=%total%+%num%
set/a contador=%contador%-1
if not %contador% == 0 (goto ¿?)
set/a media= %total% / %cant%
echo.
echo La media es %media%
pause >nul

exit

/************ 6-bat uso del cls "borra" todo y pesonalizar


pause>nul ************//////

@echo off
echo hola
echo cuando pulses una tecla se borrara todo
pause>nul
cls
echo q tal
pause>nul
exit

/*********** 7-bat Copiaremos un archivo *****/

/****para este ejercicio deberas crear 3 carpetas en el escritorio llamadas 1,2,3


y crear un archivo llamado "archivo.txt" en carpeta 1 ****/

echo bat Copiaremos un archivo


pause>nul
cls
Copy "C ocuments and SettingsAdministradorEscritorio1" "C ocuments and
SettingsAdministradorEscritorio2"
echo archivo copiado
pause>nul
cls

del "C ocuments and SettingsAdministradorEscritorio1"


echo archivo borrado
pause>nul
cls
move "C ocuments and SettingsAdministradorEscritorio2archivo.txt" "C
ocuments and SettingsAdministradorEscritorio3"
echo archivo movido
pause>nul
cls

cd "C ocuments and SettingsAdministradorEscritorio3"


pause>nul
cls
pause>nul
exit

/*****8-fecha y hora actual de tu pc *****/

@echo off
echo Fecha:%date%
echo Hora:%time%
pause>nul
exit

/*************9- bat mustra un arbol de un c unidad ***********/

@echo off
echo bat mustra un arbol de un c unidad
tree "c:"
pause>nul
exit

/*************10-bat muestra infor de sistema ****//

@echo off
echo bat muestra infor de sistema
systeminfo
pause>nul
exit

//////**********los colores son estos :


0 = Negro 1 = Azul 2 = Verde
3 = Aguamarina 4 = Rojo 5 = Púrpura
6 = Amarillo 7 = Blanco 8 = Gris
9 = Azul claro
A = Verde claro B = Aguamarina C = Rojo
D = Púrpura E = Amarillo F = Blanco
*******//////

/***************11-modo de uso de los colores *********/


@echo off
title color
color 5D
echo fijate en el color
echo.
pause >nul
color 0B
echo cabie el color
pause
exit

/************12-bat Esto es un ejemplo de archivo por lotes uniendo todo lo


anterior ***/

@echo off
color 07
echo bat Esto es un ejemplo de archivo por lotes
pause
cls
echo La Fecha y Hora
pause>nul
cls
date /t
time /t
pause>nul
cls
echo Cambiemos el color
pause>nul
color 1E
cls
echo Quien eres tu
pause>nul
cls
echo %username%
pause>nul
echo Tus tareas en ejecucion
pause>nul
tasklist
pause>nul
cls
echo Informacion de tu sistema
systeminfo
pause>nul
CLS
echo En que directorio estas
pause>nul
cls
echo %CD%

pause>nul
@echo off
echo
echo.
echo
echo.
echo
echo.
echo
echo.
echo
echo.
echo
echo.
echo
echo.
echo
echo.
echo
echo.
echo
echo.
echo
echo terminado
pause>nul
exit

/**************13-crear txt o .bat *********************/


@echo off
title Creador un archivos
echo que archivo quieres crear?
echo.
echo 1.Un .txt
echo 2.Un .bat
set /p creador=
if %creador%==1 goto txt
if %creador%==2 goto bat
:txt
echo crear .txt
echo Esta es la Segunda linea >> nuevo.txt
echo Y esta es la Siguiente >> nuevo.txt

echo Esto esta genial >> nuevo.txt


echo .txt creado en el escritorio!
pause
exit
:bat
echo crear un .bat
echo Esta es la Segunda linea >>set/p nuevo..bat
echo Y esta es la Siguiente >> nuevo..bat
echo Esto esta genial >> nuevo.bat
echo .bat creado en el escritorio
pause
exit

// PROGRAMACION
//Ahora si de verdad…..

/******************14-mostrar archivos ocultos usb *****/

@echo off
title mostrar archivos ocultos usb
color 30
echo.
echo.
echo = mostrar archivo ocultos =
echo.
echo.
echo.
echo unidades soportadas e,f,g,h,i,j,k,l,m,n
echo
echo ingresa unidad usb luego enter
echo.
set /p drive=
echo %drive%

if %drive%== 1 goto 1
if %drive%== E goto E
if %drive%== F goto F
if %drive%== G goto G
if %drive%== H goto H
if %drive%== I goto I
if %drive%== J goto J
if %drive%== K goto K
if %drive%== L goto L
if %drive%== M goto M
if %drive%== N goto N
if %drive%== exit goto exit

if %drive%== e goto e
if %drive%== f goto f
if %drive%== g goto g
if %drive%== h goto h
if %drive%== i goto i
if %drive%== j goto j
if %drive%== k goto k
if %drive%== l goto l
if %drive%== m goto m
if %drive%== n goto n
if %drive%== EXIT goto EXIT
:E
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H E:/*.* /S /D
cls
echo completado
pause>nul
exit
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H F:/*.* /S /D
cls
echo completado
pause>nul
exit
:G
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H G:/*.* /S /D
cls
echo completado
pause>nul
exit
:H
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H H:/*.* /S /D
cls
echo completado
pause>nul
exit
:I
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H I:/*.* /S /D
cls
echo completado
pause>nul
exit
:J
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H J:/*.* /S /D
cls
echo completado
pause>nul
exit
:K
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H K:/*.* /S /D
cls
echo completado
pause>nul
exit
:L
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H L:/*.* /S /D
cls
echo completado
pause>nul
exit
:M
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H M:/*.* /S /D
cls
echo completado
pause>nul
exit
:N
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H N:/*.* /S /D
cls
echo completado
pause>nul
exit
:EXIT
exit
:e
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H E:/*.* /S /D
cls
echo completado
pause>nul
exit
:f
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H F:/*.* /S /D
cls
echo completado
pause>nul
exit
:g
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H G:/*.* /S /D
cls
echo completado
pause>nul
exit
:h
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H H:/*.* /S /D
cls
echo completado
pause>nul
exit
:i
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H I:/*.* /S /D
cls
echo completado
pause>nul
exit
:j
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H J:/*.* /S /D
cls
echo completado
pause>nul
exit
:k
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H K:/*.* /S /D
cls
echo completado
pause>nul
exit
:l
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H L:/*.* /S /D
cls
echo completado
pause>nul
exit
:m
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H M:/*.* /S /D
cls
echo completado
pause>nul
exit
:n
cls
echo espere un momento puede tardar dependiendo de la cantidad
@echo off
ATTRIB -R -A -S -H N:/*.* /S /D
cls
echo completado
pause>nul
exit
:exit
exit

15-Carpeta Protegida
@ECHO OFF
cls
echo.
echo.
echo ================================
echo.
echo = proteger carpeta =
echo.
echo ================================

title Carpeta Protegida


if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto
UNLOCK
if NOT EXIST Confidencial goto MDLOCKER
:CONFIRM
echo Confirmar antes de bloquear la carpeta(S/N)
set/p "op=>"
if %op%==S goto LOCK
if %op%==s goto LOCK
if %op%==n goto END
if %op%==N goto END
echo Elige la opcion correcta.
goto CONFIRM
:LOCK
ren Confidencial "Control Panel.{21EC2020-3AEA-1069-A2DD-
08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Carpeta bloqueada
goto End
:UNLOCK
echo Introduce el password para desbloquear la carpeta
set/p "pass=>"
if NOT %pass%== hack goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
Confidencial
echo Carpeta desbloqueada correctamente
goto End
echo El password no coincide… Repite otra vez …
goto end
:MDLOCKER
md Confidencial
echo La carpeta Confidencial se ha creado correctamente
goto End
:End

WEBGRAFIA:
https://www.taringa.net/+info/ejercicios-batch-o-bat_yo7ym

http://ejerciciospuntobat.blogspot.com/

https://norfipc.com/utiles/tutorialbatch1.html

https://gist.github.com/HiroNakamura/4702728

https://todohacker.com/tutoriales/lenguaje-batch

http://www.cristalab.com/tutoriales/programacion-batch-con-archivos-.bat-c48410l/
Tarea:

Vous aimerez peut-être aussi