Programación avanzada de archivos en lotes

21
Programación avanzada de archivos en lotes .bat Esta es la segunda parte de mi tip Programación Batch con archivos .bat , así que te recomiendo leerlo si es que no estas instruido en el tema. A continuación veremos los siguientes temas: 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 conEtiquetas 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 GOTOfunciona escribiendo GOTO seguido del nombre de la etiqueta, como vemos en el siguiente ejemplo. Código : @echo off

Transcript of Programación avanzada de archivos en lotes

Page 1: Programación avanzada de archivos en lotes

Programación avanzada de archivos en lotes .bat

Esta es la segunda parte de mi tip Programación Batch con archivos .bat, así que te recomiendo leerlo si es que no estas instruido en el tema. 

A continuación veremos los siguientes temas:

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 conEtiquetas 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 GOTOfunciona 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.

Page 2: Programación avanzada de archivos en lotes

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% OrdenAEjecutarQue 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% ejecutarAccionPara saber si un archivo existe, se usa:if exist "NombreDelArchivo" AccionAEjecutaro 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 MenorLEQ, Para verificar si es menor o igual.GTR, Si es mayorGEQ, 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 datosin (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.

Page 3: Programación avanzada de archivos en lotes

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 %%xEs 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 /RFOR /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:

Page 4: Programación avanzada de archivos en lotes

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

Page 5: Programación avanzada de archivos en lotes

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

Page 6: Programación avanzada de archivos en lotes

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"

Page 7: Programación avanzada de archivos en lotes

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 escribiendoshutdown -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 -fUn 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 :

Page 8: Programación avanzada de archivos en lotes

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

ATEsta es una de las que más me gusta, es para programar alguna acción a cierta hora. Ejemplo:

Page 9: Programación avanzada de archivos en lotes

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. 

Quitar flecha al icono de acceso directo en Windows

Este es un sencillo Tip para quitar la flechita que aparece en los iconos de acceso directo de los archivos de nuestro escritorio en Windows.

La cosa es simple:

Nos dirigimos a inicio > ejecutar (win+E) Escribimos regedit

Seguimos la siguiente dirección: hkey_Classes_root/lnkfile y del lado derecho borramosisShortCut

Vamos a hkey_Classes_root/piffile y a la derecha borramos también IsShortCut

Reiniciamos el PC y ya está.

Cómo ocultar o mostrar la papelera de reciclaje en Windows

¿Cuantas veces has querido un escritorio límpio y sencillo pero la maldita papelera no te deja? En este Tip te explicaré con 2 sencillos códigos de registro cómo ocultar o mostrar la papelera de Windows.

Lo primero que vamos a hacer es abrir nuestro bloc de notas en "Inicio > Todos los programas > Accesorios > Bloc de notas", una vez allí copiamos y pegamos exactamente el siguiente código:

Código :

REGEDIT4

Page 10: Programación avanzada de archivos en lotes

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu]

"{645FF040-5081-101B-9F08-00AA002F954E}"=dword:00000001

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel]

"{645FF040-5081-101B-9F08-00AA002F954E}"=dword:00000001

Lo guardamos como: ocultar.reg . Fíjate bien en la extensión que sea .reg porque si no, no funciona.

Ahora nos vamos a donde lo guardamos y le damos doble clic, nos saldrá una advertencia y hacemos clic en "Si", nos saldrá una confirmación, hacemos clic en acepta y listo! Nuestra papelera esta oculta pero no esta oculta.. ¿Por qué? Por que el proceso explorer no esta actualizado para esto hacemos la combinación de teclas Ctrl + Alt + Supr, nos vamos a la paleta "Procesos" y buscamos un proceso llamado "explorer.exe" lo seleccionamos y le damos clic en el botón "Finalizar tarea", enseguida nos vamos a la paleta "Aplicaciones" y le damos clic en "Tarea nueva..." y escribimos en el cuadro de texto: explorer.exe

Y listo! nuestra papelera ya no esta en nuestro escritorio. Pero no esta del todo eliminada solo esta oculta y puedes acceder a ella a través del explorador de Windows.

Para hacerla aparecer hacemos un nuevo documento de texto en el bloc de notas con el siguiente código:

Código :

REGEDIT4

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons]

Page 11: Programación avanzada de archivos en lotes

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu]

"{645FF040-5081-101B-9F08-00AA002F954E}"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel]

"{645FF040-5081-101B-9F08-00AA002F954E}"=dword:00000000

Guárdalo como: mostrar.reg . Y repetimos el paso de la actualización del explorer.

*Nota: Si se te hace muy complicado el paso de actualización del explorer puedes simplemente reiniciar tu PCCambiar la ruta de Mis Documentos en Windows XP

Siempre tenemos la necesidad de tener una carpeta exclusiva donde guardar nuestros archivos. En Windows XP se introdujo una carpeta llamada Mis Documentos donde los programas, al utilizar la opción de guardar archivo, llaman a esa ruta por defecto, además de que varios virus y troyanos atacan directamente a esta carpeta, eliminando su contenido o dejándolo inutilizable.

Si queremos cambiar esa ruta por defecto tenemos que hacer los siguiente:

Presiona la tecla Windows + E, para llamar al Explorador de Windows. Despues, da click derecho en la carpeta de Mis Documentos y

elige Propiedades.

Page 12: Programación avanzada de archivos en lotes

Ahora sólo tienes que dar click en el botón de Mover y seleccionar la carpeta que deseas.

Page 13: Programación avanzada de archivos en lotes

Espero les sea útil.Personalizar el menú desplegable "Enviar a" de Windows XP

Dos tips atrás, FeNtO escribió la forma "clásica" de instalar tipografías en Windows XP. Lo que me ha hecho recordar un truco que utilizaba para (entre otras cosas) instalar tipografías en el PC. Lo hacia modificando los accesos del menú desplegable "Enviar a."

El menú desplegable "Enviar a", es un menú que aparece al presionar con el botón derecho del mouse sobre cualquier fichero en Windows. Por defecto las opciones permitidas son crear un archivo .zip, crear una acceso directo en el escritorio, mandarlo por email o a algún disco o disquetera.

Page 14: Programación avanzada de archivos en lotes

lo interesante es que podemos personalizar que queremos que aparezca en ese listado de opciones.

Lo que tenemos que hacer es abrir la carpeta "sendto", que está situada dentro de nuestra carpeta de usuario dentro de "Documents and Settings".

Hay qye tener en cuenta que esta carpeta es una carpeta oculta, con lo que deberemos activar la opción de visualización de carpetas ocultas de Windows para poder acceder a ella.

En esta carpeta se encuentran los accesos a las opciones del menú.

En el ejemplo de las tipografías yo lo que hice es colocar un acceso directo a la carpeta "Fonts" situada dentro de la carpeta "Windows". Donde están situadas las tipografías instaladas.

De esta manera dándole con el botón derecho sobre cualquier fichero de fuentes que quisiese instalar, podía enviarlo directamente a la carpeta "Fonts" del sistema, instalando así la tipografía.

Page 15: Programación avanzada de archivos en lotes

Editar este tipo de accesos es muy útil en muchos casos. Por ejemplo podemos añadir ahí nuestros droplets de Photoshop, renombres de ficheros, cambios de formatos de video etc...Cómo cambiar el nombre a la papelera de reciclaje en Windows

Si, se que es una tontería pero... ¿Quien no ha querido cambiarle el nombre a la dichosa Papelera de reciclaje por algo como… Zampabollos Asesino!? Yo si!

La forma de hacerlo es sencilla, tan solo deberéis seguir estos pasos:

Ir a Inicio/Ejecutar.

Escribir regedit y Aceptar. Con esto estamos abriendo el registro de Windows.

ATENCIÓN: A partir de aquí id con extremo cuidado. El registro siempre es algo complicado si no lo conoces bien. No me hago responsable de cualquier mal funcionamiento de la maquina.

En el editor de registro ir a Edición/Buscar y buscad la cadena Papelera de reciclaje.

Substituid todos las cadenas que encontréis en los registros por el nombre que le queráis dar. 

Page 16: Programación avanzada de archivos en lotes

Para pasar al siguiente registro pulsad F3. Continuad haciéndolo hasta que no queden registros.

Cuando acabéis vuestra Papelera de reciclaje habrá cambiado de nombre.Creación de un CD-ROM Autoejecutable

Hola a todos, voy a mostrar como crear un CD autoejecutable con Flash y un bloc de notas. Lo creáis o no, aún hay mucha gente sin Internet, o con una conexión "casual" a la que solo acceden rara vez, pero aun así, ésta gente debiera de poder enseñar cualquier proyecto, sin necesidad de tenerlo colgado en Internet. Usando Flash, y el bloc de notas voy a enseñar a crear una presentación en Flash, autoejecutable y con un icono propio.

Para realizar ésto, necesitarás:

Un programa de edición de texto.(Yo usaré el bloc de notas, pero también puedes usar Word, o cualquier otro).

Claramente, una aplicación Flash(Yo me quedo con la MX 2004).

Y el software de grabación de discos....Nero, Clone Cd, etc...

Recuerda que ésto sólo funcionará cuando el disco esté en el ordenador!

Paso primero - Creación del archivo .inf:

Abrimos el editor de texto, y escribimos:

Page 17: Programación avanzada de archivos en lotes

Código :

[autorun]

open=presentacion.exe

icon=icono.ico

Nos deberia de quedar asi:

Windows buscará en el CD, antes de decidir qué hacer. Si se encuentra [autorun], se busca la siguiente línea, "Open=" y se abrirá el archivo se indica en esa línea, que en este caso es "presentacion.exe".

Tambien se puede usar "open=/Nombre_de_la_carpeta/presentacion.exe", si el archivo .exe está dentro de una carpeta.

La línea siguiente, "icon=icono.ico", es el icono que se vera en la carpeta de Mi Pc, o Equipo (Según Windows),cuando se inserte el Cd en el ordenador. Puedes usar el logotipo de la empresa, una imagen, etc...

Se puede usar un archivo .bmp en lugar de uno .ico, pero éste es mas común. tampoco tiene porque llamarse icono el archivo, se puede poner el nombre que se quiera, pero tiene que haber concordancia entre el editor de texto, y la imagen. Si no se quiere poner una imagen, Windows tomará la imagen por defecto del propio icono de CD, pero esa línea abra que borrarla y quedaría así:

Las imagenes deben ser de 16x16px

Page 18: Programación avanzada de archivos en lotes

Y asi, el archivo .inf está acabado,