• LOL

Curso Batch [Variables]

Que es Batch?

Batch en sí, no es un lenguaje de programación sino que es un lenguaje script ya que ejecuta solamente comandos del sistema creando un archivo por lotes de texto sin formato. No es case sensitive, es decir, que tanto es válido Variable1 como VARIABLE1 o variable1.

CMD o Shell

Nuestra Shell o consola de comandos es la ventanita negra que vemos cada que se ejecuta un bat, la pueden abrir dirigiéndose a Inicio>>Ejecutar>>Escriben cmd>>Enter. Ahí pueden ir haciendo sus pruebas sobre las diferentes variables de entorno que tenemos en el sistema o bien hacer línea por línea para probar su archivo ;).

Como guardar un archivo BAT

Usaremos nuestro glorioso bloc de notas para guardar nuestros trabajos que iremos realizando durante el curso, para guardarlo como un BAT, al darle guardar como escribiremos el nombre que queramos pero con extensión .bat. Esto es lo que haremos cada que quiéranos probar un code de los del curso o algún otro. (Para que ya no pregunten cómo se guarda xD)



Variables

Como sabemos, una variable es un espacio que se reserva en memoria para alojar cierto tipo de dato. En batch solo hay 2 tipos de datos: enteros y cadenas.

@echo off
set var_string= hola
set var_num=5
echo %var_string%
echo %var_num%
pause
exit

El código anterior tiene 2 variables, una donde almacenamos una cadena y en la otra un numero, no hay ciencia :). Otro dato importante es la primera línea que hemos puesto al igual que las 2 últimas.

@echo off: Nos sirve para que al momento de ejecutar nuestro archivo, no se muestren cada línea mostrando la ruta o el proceso de cada variable o función que vayamos realizando en nuestro programa. Prueben el programa anterior quitándole la primer línea y verán como aparece

Pause: Hace un pause durante la ejecución y presionando una tecla continua con su camino :), prueben pause>nul y notarán la diferencia, lo que hace el >nul es suprimir el resultado que da la el pause en este caso Presione una tecla para continuar… dejándolo solo en blanco.



Exit: Salida o fin del programa xD

@echo off
set num1 = 9
set num2=8
set /a resul=%num1%+%num2%
echo El resultado es: %resul%
pause
exit

Este pedazo de código de arriba realiza una operación entre num1 y num2.

@echo off
set num1 = 4
echo Numero uno es: %num1%
set /a num1*=0xff
echo Ahora numero uno es: %num1%
pause
exit

Con esto acabamos de hacer una operación con un decimal y un hexadecimal, el 0x indica que se trabajará con números hexadecimales; 0xff=255, entonces 4*=255 y al final num1=510.

Operadores


Agrupación:     ()
Aritméticos:       * / % + -
Bits:                   << >>
And:                  &
OR:                    ^
XOR:                   |
Asignación:        =  *=  /=  %=  +=  -=
                           &=  ^=  |=  <<=  =>>
Separador de expresión:      ,

Introducir datos por el teclado

@echo off
set /p name = Escribe tu nombre:
echo Hola %name %
pause
exit

Tan fácil como se ve, con el set /p name nos sirve para poder reservar un espacio en memoria para guardar la cadena del nombre que se ingresara para después imprimirlo con echo Hola %name%

Conclusion sobre Variables

@echo off
echo Promedio
set /p name = Escribe tu nombre:
echo ------Calificaciones------
set /p c1 = Primer semestre:
set /p c2 = Segundo semestre:
set /p c3 = Tercer semestre:
set /p c4 = Cuarto semestre:
set /a resul=(%c1%+%c2%+%c3%+%c4%)/4
echo Tu promedio final es: %resul%
pause
exit

Es un ejemplo muy claro sobre el uso de variables, datos introducidos por el teclado y operaciones matemáticas.

Nota: En este lenguaje script solo se manejan cifras enteras, no hay decimales :(

Apps Execute, agregar programas a ejecutar

Este programa es el mismo que el anterior solo que este esta hecho en Batch puramente y este agrega rutas al registro en vez de agregar accesos directos a la carpeta de Windows.

Disfrutenlo ;)


@echo off
color 0B
title Apps Execute
mode con cols=65 lines=15
:menu
set "file="
set "name="
set "temp0="
set "temp1="
set "opc="
cls
echo.Arrastre aqui su archivo [exe]
set /p file=">> "
call:com %file%
call:error1 %file%
echo.Nombre que usara para ejecutar su programa
set /p name=">> "
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\%name%.exe" /ve /d %file% /f >nul
echo.
echo.Programa %name% agregado !!!
msg * Para verificar: Escriba [%name:~0,-4%] o [%name%] en [Ejecutar]
ping -n 4 localhost >nul
echo.Desea agregar otro programa [Y/N]
set /p opc=">> "
if /i ["%opc%"] == ["Y"] (goto:menu) else (msg * Gracias por usar Apps Execute&exit)
:com
set temp0=%1
if not [^%temp0:~0,1%] == [^"] (set file="%file%"&goto:eof) else (goto:eof)
:error1
set temp1=%1
if /i not ["%temp1:~-5,4%"] == [".exe"] (echo. Error23: Archivo invalido&pause>nul&goto:menu)
goto:eof

Agregar accesos directos a C:\Windows

Tal vez sea un nombre no muy claro pero la correcta explicación de este pequeño programa es la siguiente:

Cuando abren cierto programa desde Ejecutar es porque la ruta del ejecutable esta asociada al sistema y si no se encuentra les dice que Windows no puede encontrar el archivo "nombre"... entonces el programa siguiente hace eso, agregar accesos directos de tus programas al sistema para que los abras desde Ejecutar.


@echo off
color 0B
title Shortcut Execute
mode con cols=60 lines=15
:menu
cls
echo.Arrastre aqui su archivo [exe]
set /p file=">> "
echo.Nombre del acceso directo
set /p name=">> "
if exist "%systemroot%\%name%.lnk" (goto:comp)
:create
echo set WshShell = WScript.CreateObject("WScript.Shell") >> "%temp%\add.vbs"
echo set LinkCreator = WshShell.CreateShortcut("%systemroot%\" ^& "\%name%.lnk") >> "%temp%\add.vbs"
echo LinkCreator.TargetPath = %file% >> "%temp%\add.vbs"
echo LinkCreator.WindowStyle = 1 >> "%temp%\add.vbs"
echo LinkCreator.Description = "%name%" >> "%temp%\add.vbs"
echo LinkCreator.Save >> "%temp%\add.vbs"
call "%temp%\add.vbs"
ping -n 2 localhost >nul
echo.
msg * Acceso directo [%name%] creado con exito
del "%temp%\add.vbs"
pause>nul&exit
:comp
echo.
echo.Ya existe un acceso directo con ese nombre !!!
echo.
echo.Desea reemplazarlo? [Y/N/X] X=salir
set /p mod=">> "
if /i ["%mod%"] == ["X"] (pause>nul&exit)
if /i ["%mod%"] == ["Y"] (goto:create) else (goto:menu)
 
Nano Code © 2010 | Diseñado por Chica Blogger | Volver arriba