Programación avanzada de archivos en lotes .bat
Página 1 de 1.
Programación avanzada de archivos en lotes .bat
A continuación veremos los siguientes temas:
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:
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.
Dato Interesante:
En Batch las Mayúsculas y Minúsculas no se diferencian.
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, 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
o 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.
Un ejemplo de esto seria:
FOR:
Nos sirve para repetir un comando varias veces, en distintas variables.
Un ejemplo, 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.
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.
Otro uso que puede ser aplicado en el FOR es el listado de carpetas o archivos, como veremos a continuación:
Listado de archivos:
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.
Otro ejemplo del uso de comodín, es listar archivos con extensión común como seria este:
Aqui nos estaria listando todos los archivos que tengan la extensión .jpg
Listado de Carpetas:
FOR /D %%x in (a*) DO echo %%x
Es casi lo mismo anterior, tan solo que al indicar /D solo se aplica a directorios.
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
y
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
Con
esto creo que tenemos lo básico, y más importante de los condicionales.
Talvez otro claber se anime a profundizar más en el tema.
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:
Luego para seguir ocuparíamos esto:
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.
Quedando para terminar nuestro codigo así:
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.
Ve probando, no pierdes nada.
Apagado y Reiniciado de 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 desees.
Es notablemente fácil.
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. En windos XP mostrara un contador, con el comentario que va luego de -c, pero en Windows Vista no abra ni un contador, solamente saldrá una alerta con el Comentario, que ni siquiera es obligatorio.
Bueno, de seguro quieres hacer la prueba. La puedes hacer pero antes de eso te recomiendo que leas lo siguiente.
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.
Entonces, pues has la prueba
Tendrás suficiente tiempo para ejecutar el siguiente código. (11 días )
Con esto ya probamos los dos y podemos ser felices.
Ok, si en vez de ocupar -s usas -r el PC se reiniciara.
También puedes forzar el cierre de los programas, para que no de tiempo de guardar nada. Tan solo ocupando -f
Un ejemplo de un Pc, que se Apaga Forzosamente y que puede dañar el pc y luego se reinicia es este:
(No lo recomiendo probar en tu pc, Ya que apaga el pc en 0 segundos sin preguntar nada. )
Para programar un apagado lo veremos al final en los Datos Extras, ya que con la función AT puedes programar el apagado.
Leer archivos externos:
Para leer un archivo externo con Batch, como un archivo de texto por ejemplo. Se usa el siguiente código:
¿Simple no?
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.
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.
Con solo esta linea estamos listos. Haz la prueba!
Otras cosas útiles:
Para terminar hablare de pequeñas funciones que pueden ser de utilidad.
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:
AT
Esta es una de las que más me gusta, es para programar alguna acción a cierta hora.
Ejemplo:
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.
Creo
que he terminado, me costó un poco. Ojala no me haya faltado nada.
Disfrútenlo y seria bueno que los Clabers aporten con más información.
Yo creo que seria útil para todos, incluyéndome.
Suerte.
- Uso de etiquetas
- Condicionales
- Creación de Menús
- Apagado y Reiniciado de Pc
- Leer archivos externos
- Insertar al Registro
- Otras cosas útiles
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:
- Código:
: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
Dato Interesante:
En Batch las Mayúsculas y Minúsculas no se diferencian.
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, 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
o 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.
Un ejemplo de esto seria:
- Código:
if 5 GTR 4 echo Hola
FOR:
Nos sirve para repetir un comando varias veces, en distintas variables.
Un ejemplo, 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.
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.
Otro uso que puede ser aplicado en el FOR es el listado de carpetas o archivos, como veremos a continuación:
Listado de archivos:
- Código:
@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.
Otro ejemplo del uso de comodín, es listar archivos con extensión común como seria este:
- Código:
@echo off
FOR %%x in (*.jpg) DO echo %%x
pause
Aqui nos estaria listando todos los archivos que tengan la extensión .jpg
Listado de Carpetas:
FOR /D %%x in (a*) DO echo %%x
Es casi lo mismo anterior, tan solo que al indicar /D solo se aplica a directorios.
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
y
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
Con
esto creo que tenemos lo básico, y más importante de los condicionales.
Talvez otro claber se anime a profundizar más en el tema.
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.
Ve probando, no pierdes nada.
Apagado y Reiniciado de 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 desees.
Es notablemente fácil.
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. En windos XP mostrara un contador, con el comentario que va luego de -c, pero en Windows Vista no abra ni un contador, solamente saldrá una alerta con el Comentario, que ni siquiera es obligatorio.
Bueno, de seguro quieres hacer la prueba. La puedes hacer pero antes de eso te recomiendo que leas lo siguiente.
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.
Entonces, pues has la prueba
- Código:
shutdown -s -t 999999 -c "Esto se esta apagando"
Tendrás suficiente tiempo para ejecutar el siguiente código. (11 días )
- Código:
shutdown -a
Con esto ya probamos los dos y podemos ser felices.
Ok, si en vez de ocupar -s usas -r el PC se reiniciara.
También puedes forzar el cierre de los programas, para que no de tiempo de guardar nada. Tan solo ocupando -f
Un ejemplo de un Pc, que se Apaga Forzosamente y que puede dañar el pc y luego se reinicia es este:
- Código:
shutdown -r -f -t 0 -c "Bye"
(No lo recomiendo probar en tu pc, Ya que apaga el pc en 0 segundos sin preguntar nada. )
Para programar un apagado lo veremos al final en los Datos Extras, ya que con la función AT puedes programar el apagado.
Leer archivos externos:
Para leer un archivo externo con Batch, como un archivo de texto por ejemplo. Se usa el siguiente código:
- Código:
type "NombreDelArchivo.txt"
¿Simple no?
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.
- Código:
REG ADD HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run /v MIBATCH.bat /t REG_SZ /d
C:\MIBATCH.bat
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.
Con solo esta linea estamos listos. Haz la prueba!
Otras cosas útiles:
Para terminar hablare de pequeñas funciones que pueden ser de utilidad.
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:
- Código:
msg * EsteEsMiMensaje
AT
Esta es una de las que más me gusta, es para programar alguna acción a cierta hora.
Ejemplo:
- Código:
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.
Creo
que he terminado, me costó un poco. Ojala no me haya faltado nada.
Disfrútenlo y seria bueno que los Clabers aporten con más información.
Yo creo que seria útil para todos, incluyéndome.
Suerte.
Scratch- Administrador
- Mensajes : 70
Fecha de inscripción : 22/05/2011
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.