Mostrando las entradas con la etiqueta variables de entorno. Mostrar todas las entradas
Mostrando las entradas con la etiqueta variables de entorno. Mostrar todas las entradas

viernes, 19 de diciembre de 2014

Ejercicios Simples

Con los comandos ya presentados podemos hacer un montón de cosas. Ahora jugaré un poco con ellos e inventaré algunas cosas, ¡a ver que tal sale!


Lo primero que se me vino a la mente son los ejercicios que nos hacen en informática cuando empiezas con Java. Son unos calculos matemático muy básico y a medida que avanzaos se les agrega más complejidad.

Partiré con la suma y resta:

   
        @Echo off
       
        REM Lo primero que se debe hacer para sumar o restar es crear una o más variables
        REM que guarden resultados o los dígitos a evaluar.
        REM El comando Set tiene permitido guardar y evaluar números enteros, hexadecimales y octales.
       
        Set numero_entero_1=128
        Set numero_entero_2=896
       
        REM Ahora necesitamos un comando que evalue y los sume.
        REM En este mismo comando "Set" tenemos un modificador ("/A") que nos permite hacer eso.
        REM Usaremos "Set /A" para realizar la evaluacón, pero la guardaremos en otra variable.
       
        Set /A suma=%numero_entero_1% + %numero_entero_2%
        Set /A resta=%numero_entero_1% - %numero_entero_2%
       

        REM Ya tenemos la suma y resta de 128 y 896, pero necesitamos un comando que los saque por pantalla.
        REM Aquí entra "Echo" y "Pause". Este último es para que la consola no se cierre luego de completar la acción.
       
        Echo La suma de %numero_entero_1% y %numero_entero_2% es : %suma%
        Echo. (Lo que hace "echo" aquí es un salto de línea, y solo poniendo un punto delante del comando lo hace)
        Echo La resta de %numero_entero_1% y %numero_entero_2% es: %resta%
        Pause
       
Para la multiplicación y división es lo mismo, pero encontramos una piedra de tope en la división ya que CMD trabaja sólo con números enteros.

        @Echo off
       
        REM Al igual que en el ejercicio anterior lo primero es crear las variables, pero esta vez harémos
        REM que el usuario ingrese los números a evaluar usando el modificador "/P" en Set.
       
        Set /P numero_entero_1=Ingresa el primero numero:
        Set /P numero_entero_2=Ingresa el segundo numero:
       
        REM Ahora los evaluamos usando "Set /A" nuevamente.
       
        Set /A multiplicacion=%numero_entero_1% * %numero_entero_2%
        Set /A division=%numero_entero_1% / %numero_entero_2%
       
        REM Nuevamente usaremos "Echo" para sacar los resultados en pantalla.
       
        Echo La multiplicacion de %numero_entero_1% y %numero_entero_2% es : %multiplicacion%
        Echo.
        Echo la division de %numero_entero_1% y %numero_entero_2% es : %division%
        Pause
       
    Nota: A causa de la limitación de CMD al dividir, éste sólo nos mostrará el valor entero.
        Ejemplo: "1000 / 14 = 74,42" y la consola nos mostrará "1000 / 14 = 74"
       
Existen algunas formas de hacer que se muestren algunos decimales por ejemplos esta:

        @Echo off
        MODE con cols=46 lines=20
        Title Division
        :Inicio
        Echo numero 1:
        Set /P num1=
        Set decimales=%num1%
        Echo numero 2:
        Set /P num2=
        Set decimales2=%num2%

        REM Desglosado
        Echo.
        Echo.

        Set /A entero=%num1%/%num2%
        Set /A decimales*=10000
        Set /A decimales2*=100
        Set /A decimal=%decimales%/%decimales2%
        For /F "tokens=* delims=%entero%" %%a IN ("%decimal%") DO (
        Set decimal2=%%a
        )
        Echo Entero=%entero%
        Echo Decimal=%decimal2%
        Echo.
        Echo
Resultado: %entero%,%decimal2%
       
    Nota: Esta forma funciona sólo con numeros enteros positivos. Además solo puede ser la division de un número mayor por uno menos.
          A base de esto se puede mejorar mucho el código. Simplemente lo que hace es "agrandar" los números para poder tener más dígitos positivos
          y así poder trabajar con ellos pasándolos a decimales.
         
Otros ejercicios sin evaluaciones matemáticas podrían ser relacionados al mismo sistema operativo:

        @Echo off & Title Buscador de objetos
        Setlocal enabledelayedexpansioin
        :Inicio
        Cls
        CD
%userprofile%
        For /D %%a IN (*) DO (Echo %%a)
        Echo --------------------- Directorios disponibles---------------------
        Echo.
        Echo.
        Echo
Escriba el directorio que desee recorrer:
        Set /P opcion=
        CD %opcion%
        If %errorlevel%==1 Goto Inicio
        Echo.
        Echo
Escriba la extension de el(los) archivo(s) a buscar:
        Set /P opcion2=
        Echo.
        Set
count=0
        For /R %%b IN (*.%opcion2%) DO (
        Set encontrado=%%b
        For /F "tokens=3-13 delims=\" %%c IN ("%%b") DO (
        Set encontrados=%%c   %%d   %%f   %%g   %%h   %%i   %%j   %%k   %%l 
        )
        Call:Funcion_1
        )
        Echo Total archivos encontrados:%count%
        Pause
        Goto
Inicio

        :Funcion_1
        Echo Encontrado: %encontrados%
        Set /A count=%count%+1
       
Ahora al revez, primero digo lo que el programa debe mostrar y luego doy el código que lo realiza.
       
        -Programa que lea dos números ingresados por el usuario y muestre por pantalla el mayor de ambos.
        -Programa que lea tres números ingresados por el usuario y muestre el menor de los tres.
        -Programa que lea 5 números ingresados por el usuario y muestre los que son pares.
        -Programa que muestra la tabla de multiplicar hasta 10 de un número ingresado por el usuario.
        -Programa que muestre por pantalla el mensaje escrito por el usuario con la respectiva fecha y hora.

       
        NOTA: Todo se puede realizar con los comandos básico ya mencionados.
              ¡Respuestas en el próximo post!

lunes, 15 de diciembre de 2014

Funciones y Variables importantes (Básicas)

La consola de comandos de Windows posee una gran variedad de funciones y utilidades dentro el sistema.
Batch no es considerado un lenguaje de programación ya que solo consiste en línea de ordenes que se pueden ejecutar en solo este sistema operativo.
A pesar de todo logra llevar a cabo grandes funciones.

A mi parecer la imaginación es muy importante, ya sea en un lenguaje de programación como Java, C, C# o en Batch.


Para comenzar con las funciones debo primero mencionar que los archivos por lotes ejecutados con la consola de Windows son muy limitados y sensibles en cuanto a simbología, tamaños, etc, por lo que a veces se hace difícil la tarea de llevar a cabo un programa y es aquí cuando entra la imaginación a juego.

Variables:
    Existen muchas variables en Windows tanto internas de la consola como del Sistema operativo en sí llamadas variables de entorno.
    Las variables que se tienen en el sistema operativo se pueden observar en:

        1.- "Equipo/Propiedades/Configuración avanzada del sistema/Variables de entorno"
        2.- "Abrimos "ejecutar" presionando la tecla Windows + R juntas y escribimos "systempropertiesadvanced.exe" y damos Enter"
        3.- "Mediante la consola de comandos escribimos el comando "Set" y presionamos Enter.


Listado de algunas variables de entorno:
    ALLUSERSPROFILE=C:\ProgramData
    APPDATA=C:\Users\[Nombre usuario]\AppData\Roaming
    CommonProgramFiles=C:\Program Files\Common Files
    CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
    CommonProgramW6432=C:\Program Files\Common Files
    COMPUTERNAME=[Nombre del PC]
    ComSpec=C:\Windows\system32\cmd.exe
    FP_NO_HOST_CHECK=NO
    HOMEDRIVE=C:
    HOMEPATH=\Users\[Nombre usuario]
    JAVA_HOME=C:\Program Files\Java\jre1.8.0_25\bin
    LOCALAPPDATA=C:\Users\[Nombre usuario]\AppData\Local
    LOGONSERVER=\\[Nombredel PC]-PC
    NUMBER_OF_PROCESSORS=8 (Varia según tu procesador)
    OS=Windows_NT
    Path=C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared
    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
    PROCESSOR_ARCHITECTURE=AMD64
    PROCESSOR_IDENTIFIER=AMD64 Family 21 Model 2 Stepping 0, AuthenticAMD
    PROCESSOR_LEVEL=21
    PROCESSOR_REVISION=0200
    ProgramData=C:\ProgramData
    ProgramFiles=C:\Program Files
    ProgramFiles(x86)=C:\Program Files (x86)
    ProgramW6432=C:\Program Files
    PROMPT=$P$G
    PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\
    PUBLIC=C:\Users\Public
    SESSIONNAME=Console
    SystemDrive=C:
    SystemRoot=C:\Windows
    TEMP=C:\Users\[Nombre usuario]\AppData\Local\Temp
    TMP=C:\Users\[Nombre usuario]\AppData\Local\Temp
    USERDOMAIN=[Nombredel PC]
    USERNAME=[Nombre usuario]
    USERPROFILE=C:\Users\[Nombre usuario]
    windir=C:\Windows
   
Otras variables:
    Time=Muestra la hora del sistema.
    Date=Muestra la fecha del sistema.
    Random=Muestra un número al azar entre 0 y 32767.
    CD=Ruta actual. (Si se ejecuta desde la consola arrojará el contenido de %UserProfile%)
    ErrorLevel=Muestra el nivel de error actual.
    CmdExtVersion=Muestra en qué estado de extensión está la consola (apagado o encendido)

Modificadores de consola:
    MODE:
        Este pseudo comando tiene varias funciones, pero la mayoría son para usuario avanzados por lo que nos centraremos en dos.
        MODE CON COLS=[Número de columnas] LINES=[Número de líneas] (Modifica la ventana de la consola)
        MODE CON RATE=[Velocidad del teclado] DELAY=[retraso antes de escribir]

    Title: Asigna un título a la ventana de la consola.

    Setlocal:
        Este se divide en dos opciones.
        "Setlocal enableextensions / disableextensions" que habilitan o deshabilitan las extensiones en la consola.
        "Setlocal enabledelayedexpansion / disabledelayedexpansion" que habilitan o deshabilitan las expansiones de las variable de entorno.

Funciones básicas:
    EOF= End of file. Termina un llamado de comando dentro de la consola.
    EOL= End of line. Indica el término de la función de un comando.
    CLS= Limpia la pantalla.
    CALL= Llama un comando o variable externo o interno en la consola actual y lo ejecuta, por decirlo de alguna manera, en segundo plano.
    Goto= Es muy parecido al comando "Call". Va a una etiqueta o variable designada por el usuario.
   
    Etiquetas:
        Las etiquetas se designan de la siguiente forma.
        [:NombreDeEtiqueta]

    El ejemplo más visto en internet de las etiquetas es algo así:
       
        @Echo off & CLS
        :Inicio
        Echo Hola, soy Codex y me gustan las manzanas. (Verdadero/Falso)
        Set /P respuesta=
        If %respuesta%==verdadero Call:Funcion_1
        If %respuesta%==falso Call:Funcion_2
        If NOT DEFINED %respuesta%  Goto Inicio
        Exit
        :Funcion_1
        Echo Si! Felicidades!
        GOTO:EOF
        :Funcion_2
        Echo Te haz equivocado, me gustan mucho las manzanas.
        GOTO:EOF