Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
bat
Por JaLeRu el 12 de Noviembre de 2007 con 515,345 visitas
Tecnologia y otros Otros tutoriales por JaLeRu.
En este tip hablaremos sobre cómo manejar algunas funciones de Windows mediante
archivos 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 comandos DOS. Cuando se ejecuta este
archivo bat, los comandos contenidos son ejecutados en grupo, de forma secuencial, permitiendo
automatizar diversas tareas.
Cualquier comando DOS 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, que pueden ejecutar desde Inicio-
>Ejecutar->CMD.
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"
Explicamos:
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.
pause:
Como bien se lee, pausa la ejecución del código. Además muestra el texto "Presione una tecla para
continuar"
exit:
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.
Si has trabajado en PHP, te 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.
cd "C:\"
chdir "C:\"
Los ejemplos anteriores hacen exactamente lo mismo, cambian al Disco C
COPY:
Código :
Código :
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:
Move:
Código :
@echo off
echo Hola, Cuando pulses la tecla se borrara el contenido y cambiara por
otro.
pause
cls
echo ¿Ves?
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.
Inicio->Ejecutar-CMD
Código :
echo off
Código :
cls
Ahora veamos la ayuda de la función Copy:
Código :
copy /?
Cerremos la ventana:
Código :
exit
Ahora vamos a crear un Batch que copie un archivo, luego lo mueva a otro directorio, borre el
original y vuelva a copiar el copiado.
En la carpeta donde crearás el archivo .bat crea un archivo de texto llamado copiame.txt. En él,
escribe lo que quieras. 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
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 :
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 :
Personalizando el SHELL
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:
Pause Personalizado:
¿No te gusta que al poner pause salga "Presione una tecla para continuar..."?
Pues si escribes "pause>nul" no aparecerá ni un texto.
Entonces si anteponemos un mensaje, quedaría así.
Código :
Además puedes jugar con los caracteres. Aquí un ejemplo, donde cambié los colores y jugué con
los caracteres y personalicé el pause:
Código :
@echo off
color 30
echo ==================================
echo = =
echo = Personalizado =
echo = =
echo ==================================
echo.
echo.
echo Esto esta personalizado, para salir presiona una tecla.
pause>nul
exit
Cabe mencionar que echo. (Echo seguido de un punto)sirve para saltarse una línea.
Matando Procesos:
Código :
Código :
ABRIENDO PROCESOS:
Ahora abramos ese proceso que cerramos. Para abrir procesos se usa la función Start que
funciona así:
Código :
start proceso.exe
Código :
start wmplayer.exe
Ejemplo2:
Código :
start www.google.cl
VARIABLES:
Código :
Código :
@echo off
set Nombre= Javier Letelier Ruiz
echo %Nombre%
pause
Código :
Si quieres que tu Variable sea dinámica, osea que el Usuario la elija antepones /p:
Código :
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:
Código :
set numero1=2
ser numero2=43
set /a suma= %numero1% + %numero2%
echo %suma%
pause
exit
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.
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
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:
Código :
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
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
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
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
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.
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"
Código :
shutdown -a
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.
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!
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 :
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.