(Tema bloqueado hasta finalizar el tuto) Tutorial extendido de aprendizaje Batch

Iniciado por Eleкtro, 4 Noviembre 2012, 15:25 PM

0 Miembros y 5 Visitantes están viendo este tema.

Eleкtro

    EL TUTORIAL Y EL ÍNDICE ESTÁN EN PROCESO...






    ÍNDICE

    Pincha en un tema para ir directamente.

    • Página 1

    • 1. DEFINICIONES

                  Lenguaje de programación
                  Procesamiento por lotes
                  Script
                  Comando
                  CMD (o Consola) (o Shell) (o DOS) (o Símbolo de sistema)
                  BATCH
                  Archivo BAT
                  CLI (CommandLineInterface)
                  Subrutina
                  Argumento (o Parámetro)
                  Variable
                  Variable de entorno de Windows
                  PATH (Variable de entorno de Windows)
                  String (o Cadena)
                  Concatenación
                  Expresión
                  Expresión regular (o REGEXP, o Patrón)
                  Operador
                  Pseudocódigo

    • 2. CONSEJOS ANTES DE COMENZAR

                  Defínemelo otra vez
                  Pregúntaselo a la CMD (Help, /?, -h, -help)
                  En busca del error
                  Productividad 1 (Editores de código)
                  Productividad 2 (Plantillas)
                  Práctica (Retos)
                  Ética

    • 3. LOS PRIMEROS PASOS

                  3.1 Una identidad (Title)[/li][/list]
                  3.2 La voz (Echo, Echo:, Echo+)
                  3.3 El silencio (@, Echo OFF, >NUL)
                  3.4 La escritura ("")
                  3.5 La lectura (REM)
                  3.6 Caminar (GOTO, Pause)
                  3.7 Memorizar (Set)

    • 4. OPERADORES

                  4.1 Operadores de Ejecución condicional   (& && ||)
                  4.2 Operadores de Ejecución condicional simulada  (&= ^= |=)
                  4.3 Operadores de Exclusión (^)
                  4.4 Operadores de Agrupación  ( () )
                  4.5 Operadores de comparación (o Condicionales) (== EQU NEQ LSS LEQ GTR GEQ)
                  4.6 Operadores de desplazamiento lógico (o Redireccionamiento) (> >> < |)
                  4.7 Operadores aritmétricos y de asignación (+ - * / % = += -= *= /= %= >>= <<=)
                  4.8 Otros operadores (@ :: "" % ! ? * . .. \)



    • 6. VARIABLES

                  6.1 Variables especiales (o variables de parámetro) (o variables de argumento)  (%0 %*)
                  6.2 Variables Standard (%%)  (SET, SET /A, SET /P)
                  6.3 Variables expandidas (!!)   (SETLOCAL ENABLEDELAYEDEXPANSION)
                  6.4 Variables de entorno (%%)
                  6.5 Variables de FOR  (%%a)


    compmaraciones
    búcles
    subrutinas
    • 5. SINTAXIS

    comandos








    Eleкtro

    #1
    1. DEFINICIONES



    • Lenguaje de programación

    Cita de: WIKIPEDIAUn lenguaje de programación es un idioma artificial diseñado para expresar procesos que pueden ser llevadas a cabo por máquinas como las computadoras.
    Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana.
    Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones.

    También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos.






    • Procesamiento por lotes

    Cita de: WIKIPEDIASe conoce como sistema por lotes (batch processing), o modo batch, a la ejecución de un programa sin el control o supervisión directa del usuario (que se denomina procesamiento interactivo). Este tipo de programas se caracterizan porque su ejecución no precisa ningún tipo de interacción con el usuario.

    Generalmente, este tipo de ejecución se utiliza en tareas repetitivas sobre grandes conjuntos de información, ya que sería tedioso y propenso a errores realizarlo manualmente. Un ejemplo sería el renderizado de los fotogramas de una película.






    • Script

    Cita de: WIKIPEDIAUn script es un programa que por lo regular se almacena en un archivo de texto plano.
    Los scripts son casi siempre interpretados, pero no todo programa interpretado es considerado un script.
    El uso habitual de los scripts es realizar diversas tareas como combinar componentes, interactuar con el sistema operativo o con el usuario. Por este uso es frecuente que los shells sean a la vez intérpretes de este tipo de programas






    • Comando

    Cita de: WIKIPEDIAUn comando (calco del inglés command, «orden, instrucción» o mandato) es una instrucción u orden que el usuario proporciona a un sistema informático, desde la línea de comandos (como una shell) o desde una llamada de programación. Puede ser interno (contenido en el propio intérprete) o externo (contenido en un archivo ejecutable).

    Suele admitir parámetros (argumentos) de entrada, lo que permite modificar su comportamiento predeterminado.






    • CMD (o Consola) (o Shell) (o DOS) (o Símbolo de sistema)

    Cita de: WIKIPEDIAEl símbolo del sistema (en inglés Command prompt) es el intérprete de comandos.
    Es el equivalente de command.com en MS-DOS y sistemas de la familia Windows 9x.

    Muchas funciones que se realizan desde la interfaz gráfica de Windows son enviadas al CMD que es el encargado de ejecutarlas.

    NOTA: La CMD se encuentra en la ruta: C:\Windows\System32\CMD.exe






    • BATCH

    Batch es un lenguaje secuencial (procesamiento por lotes) por comandos que proviene de la familia de comandos "MS-DOS", el cual puede interactuar perfectamente con Windows,
    Batch sirve entre otras cosas para realizar scripts que automaticen taréas comunes del sistema, taréas que nos resultarían dificil hacer a mano como por ejemplo organizar una carpeta usando "reglas" cada X tiempo, automatizar un procedimiento virtual parecido a un "BOT" como sería abrir una página web y clickar cada X tiempo en un lugar, etc, etc, etc...






    • Archivo BAT

    "BAT" no es más que la extensión de un archivo, para que la CMD identifique un script escrito en Batch, deberemos añadirle la extensión .BAT, o .CMD al archivo.

    Cita de: WIKIPEDIAun archivo 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 MS-DOS. Cuando se ejecuta este archivo, —mediante CMD— los comandos contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas. Cualquier comando MS-DOS puede ser utilizado en un archivo batch.

    Ésta es la forma de automatizar procesos (copiar, pegar, renombrar y enviar datos) en MS-DOS. De este modo, evitamos procesos rutinarios y monótonos, acelerando los mismos. Tiene la funcionalidad de conectarse con otras interfaces por línea de comandos.

    Un tipo batch es un archivo de texto que contiene comandos a ejecutar en un intérprete de comandos propio de DOS o OS/2. Cuando es iniciado, un programa shell —típicamente command.com o cmd.exe— lo lee y ejecuta, generalmente línea a línea. De este modo, se emplea para ejecutar series de comandos automáticamente. El hecho de que funcione sólo para MS-DOS lo hace muy limitado. Su extensión es .bat o .cmd.






    • CLI (CommandLineInterface)

    CLI es un término que se refiere a las aplicaciones sin interfaz gráfica.

    Una "Aplicación CLI" equivale a decir "Aplicación por línea de comandos", estas aplicaciones son programadas para usarse exclusivamente desde la consola.

    Normalmente estas aplicaciones están programadas para que actuen al pasarle un argumento mediante la consola, y suelen especificar su funcionamiento mediante una opción de ayuda en la consola, en los que se indica qué se quiere ejecutar y que hace cada cosa.

    Cita de: WIKIPEDIAInterfaz de Línea de Comandos (CLI), por su acrónimo en inglés de Command Line Interface (CLI), es un método que permite a las personas dar instrucciones a algún programa informático por medio de una línea de texto simple. Debe notarse que los conceptos de CLI, Shell y Emulador de Terminal no son lo mismo, aunque suelen utilizarse como sinónimos.

    Las CLI pueden emplearse interactivamente, escribiendo instrucciones en alguna especie de entrada de texto, o pueden utilizarse de una forma mucho más automatizada (archivo batch), leyendo comandos desde un archivo de scripts.






    • Subrutina

    Cita de: WIKIPEDIAuna subrutina o subprograma (también llamada procedimiento, función o rutina), como idea general, se presenta como un subalgoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea específica.

    Una subrutina al ser llamada dentro de un programa hace que el código principal se detenga y se dirija a ejecutar el código de la subrutina.






    • Argumento (o Parámetro)

    Un argumento es un valor que podemos enviarle a una aplicación CLI o a una Subrutina de nuestro archivo bat para que interactuen con dicho valor.

    CitarUn argumento o parámetro es una variable que puede ser recibida por una rutina o subrutina.
    Una subrutina usa los valores asignados a sus argumentos para alterar su comportamiento en tiempo de ejecución.






    • Variable

    Una variable (En Batch) es un espacio virtual donde podemos guardar información en forma de texto alfabético, numérico, y alfanumérico.
    Las variables son uno de los elementos más usados en cualquier lenguaje de programación/scripting, y en Batch las necesitaremos usar casi siempre.

    Cita de: WIKIPEDIAespacio de memoria de un ordenador, necesario para la ejecución de «programas».






    • Variable de entorno de Windows
    Son variables predefinidas del sistema.

    Cita de: WIKIPEDIAEs posible acceder al valor de una variable de entorno, ya sea para consultarlo como para modificarlo, tanto dentro de scripts como desde la línea de comandos.

    NOTA: Podemos consultar nuestras variables de entorno escribiendo en la CMD:
    Set /?
    También podemos crear una variable de entorno con el comando SETX.






    • PATH (Variable de entorno de Windows)

    Posiblemente la variable de entorno más importante del sistema, en ella se almacenan las rutas de búsqueda de las aplicaciones y por eso hay que aprender su nombre y su definición.

    NOTA: Se pueden añadir más rutas a la variable PATH.






    • String (o Cadena)

    Cita de: WIKIPDIAEn programación, una cadena de caracteres, palabra, ristra de caracteres o frase (string en inglés) es una secuencia ordenada de longitud arbitraria (aunque finita) de elementos que pertenecen a un cierto lenguaje formal o alfabeto análogas a una frase o a una oración. En general, una cadena de caracteres es una sucesión de caracteres (letras, números u otros signos o símbolos).

    Desde un punto de vista de la programación, si no se ponen restricciones al alfabeto, una cadena podrá estar formada por cualquier combinación finita de todo el juego de caracteres disponibles (las letras de la 'a' a la 'z' y de la 'A' a la 'Z', los números del '0' al '9', el espacio en blanco ' ', símbolos diversos '!', '@', '%', etc). En este mismo ámbito (el de la programación), se utilizan normalmente como un tipo de dato predefinido, para palabras, frases o cualquier otra sucesión de caracteres.






    • Concatenación

    Cita de: WIKIPEDIAEs la operación por la cual dos caracteres se unen para formar una cadena de caracteres (o string).
    También se puede concatenar dos cadenas de caracteres o un carácter con una cadena para formar una cadena de mayor tamaño.

    NOTA: También se pueden concatenar comandos.






    • Expresión

    Cita de: WIKIPEDIAEn programación, una expresión es una combinación de constantes, variables o funciones, que es interpretada de acuerdo a las normas particulares de precedencia y asociación para un lenguaje de programación en particular. Como en matemáticas, la expresión es su valor evaluado, es decir, la expresión es una representación de ese valor.






    • Expresión regular (o REGEXP, o Patrón)

    Cita de: WIKIPEDIAUna expresión regular, a menudo llamada también patrón, es una expresión que describe un conjunto de cadenas sin enumerar sus elementos. Por ejemplo, el grupo formado por las cadenas Handel, Händel y Haendel se describe mediante el patrón "H(a|ä|ae)ndel". La mayoría de las formalizaciones proporcionan los siguientes constructores: una expresión regular es una forma de representar a los lenguajes regulares (finitos o infinitos) y se construye utilizando caracteres del alfabeto sobre el cual se define el lenguaje.






    • Operador

    Un operador es un conjunto de caracteres reservados por el lenguaje (normalmente uno, o dos caracteres) que se encarga de realizar ciertas operaciones, como operaciones matemáticas, de asignación, o de desplazamiento.






    • Pseudocódigo

    Cita de: WIKIPEDIAel pseudocódigo (o falso lenguaje) es una descripción de un algoritmo informático de programación de alto nivel compacto e informal que utiliza las convenciones estructurales de un lenguaje de programación verdadero, pero que está diseñado para la lectura humana en lugar de la lectura en máquina, y con independencia de cualquier otro lenguaje de programación. Normalmente, el pseudocódigo omite detalles que no son esenciales para la comprensión humana del algoritmo, tales como declaraciones de variables, código específico del sistema y algunas subrutinas. El lenguaje de programación se complementa, donde sea conveniente, con descripciones detalladas en lenguaje natural, o con notación matemática compacta. Se utiliza pseudocódigo pues este es más fácil de entender para las personas que el código de lenguaje de programación convencional, ya que es una descripción eficiente y con un entorno independiente de los principios fundamentales de un algoritmo.









    Eleкtro

    #2
    2. CONSEJOS ANTES DE COMENZAR



    • Defínemelo otra vez

    Si no entendiste alguna de las definiciones anteriores, es hora de que vuelvas a repasarlas porque todas ellas las vas a tener que poner en práctica muy pronto, y muy a menudo.






    • Pregúntaselo a la CMD

    Puedes obtener una lista de la mayoría de comandos internos y externos disponibles en Windows además de una información breve, escribiendo HELP en la CMD.

    Todos los comandos existentes en la CMD disponen de un menú de ayuda al que puedes acceder con el parámetro /? de la siguiente manera:

    Comando /?

    Los comandos externos (Aplicaciones CLI) también deberían disponer de un menú de ayuda, suelen estar programadas para multi SO y por personas con distintos gustos a la hora de scriptear, por eso los parámetros de ayuda suelen ser distintos, los parámetros más comunes son -h y -help

    Comando -h
    Comando -help

    NOTA: Algunas aplicaciones CLI (Mal programadas según mi opinión) distinguen entre mayúsculas y minúsculas por lo que hay que escribir correctamente el parámetro según se indique (-help, -HELP).






    • En busca del error

    Si algún script te tira error y desconoces el motivo, hay dos técnicas muy útiles para intentar localizar la causa del error.

    1º - Ejecuta el script directamente desde la CMD escribiendo la ruta del script (No haciendo doble click sobre el script), de esta manera la CMD no se cerrará y podrás ver la información del error.

    2º - Usa el comando Echo para mostrar el contenido de las variables o los comandos de los que sospeches que están causando el error.

    Por ejemplo, tenemos este código que hace una comparación condicional, pero la comparación no nos funciona y no sabemos porqué:
    @Echo OFF
    Set "Variable=Valor"
    if "%VARIABLE%" EQU "Valoor" (Echo Si)
    Pause >NUL


    El ejemplo es muy fácil para todos, lo sé, pero si tenemos un código con más de 100 líneas y tenemos las variables desperdigadas por el código, no sabemos donde está cada cosa, etc, etc... la cosa se complica!, por eso esta solución nos servirá en todas esas ocasiones.

    Usariamos la línea de la que sospechamos como línea de comentario, y una línea más arriba pegariamos la línea pero usando el comando Echo, para mostrar lo que no podemos ver a simple vista en el script:

    @Echo OFF
    Set "Variable=Valor"
    ECHO if "%VARIABLE%" EQU "Valoor" (Echo Si)
    REM if "%VARIABLE%" EQU "Valoor" (Echo Si)
    Pause >NUL




    El error salta a la vista, lo hemos encontrado y solucionado.






    • Productividad (1)

    Hay que intentar ser productivos con nuestros scripts y adecuar nuestro lugar de práctica,
    no es lo mismo empezar a programar nuestro código abriendo el bloc de notas, que hacerlo en un editor de código profesional especializado en ello,
    este tipo de editores por lo general te corrigen o te avisan automáticamente de los errores tipográficos que hayas cometido, y creéme, al empezar se cometen demasiados errores.
    También colorean las diferentes partes de un código, y eso al principio te ayudará a entender mejor que es cada cosa, y donde dese estar situada.

    Un editor de código es la mejor manera para empezar en esto, te ayudará a separar, encontrar, y entender las partes de un script, y aprenderás el manejo en menor tiempo que con el bloc de notas.

    Veámos las diferencias que nos aportan cada uno:

    Notepad

    • NADA
    • Ah, si... el botón "buscar"  (xD)

    Editor

    • Auto-corrección
    • Auto-indentación
    • Auto-completado (de palabras/comandos)
    • Resalto en colores de la sintaxis
    • Colores ajustables de letra y fondo para descansar la vista
    • Un sin fín de opciones variadas que suelen tener cualquier editor como por ejemplo "ordenar lineas", multi-seleccionar líneas o palabras al mismo tiempo, y multi búsquedas.

    Si quieres mi recomendación, la mejor elección para codear scripts Batch es el editor Sublime Text Editor, aunque muchos otros optan por el editor Notepad++
    Sublime Text > http://www.sublimetext.com/2
    Notepad++ > http://notepad-plus-plus.org/






    • Productividad (2)

    Seguramente no sepas que puedes crear tu propia plantilla de trabajo personalizada para tus archivos BAT, y seleccionar esta nueva plantilla en el menú contextual de crear nuevos archivos:



    Pues así es, se puede conseguir, y con ello se ahorra una considerable cantidad de tiempo si la plantilla está adecuada a tus necesidades...

    Aquí tienes mi plantilla por defecto, y un archivo de registro que es necesario para agregar esta nueva opción (Solo lo he testeado en Windows 7).

    Plantilla.bat
    @Echo OFF
    TITLE Plantilla Batch por defecto by Elektro H@cker

    Setlocal enabledelayedexpansion

    Set    "VAR="
    Set /A "NUM=0"


    :: IF "%VAR%" EQU "" (PAUSE)

    :: FOR /F "Usebackq Tokens=* Delims=" %%@ IN ("") DO ()
    :: FOR /L %%@ IN (0,1,10) DO ()
    :: FOR /R %%@ in (*) DO ()
    :: FOR %%@ IN () DO ()


    Pause&Exit



    Plantilla.reg
    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\.bat\ShellNew]
    "NullFile"=""
    "Filename"="Plantilla.bat"

    [HKEY_CLASSES_ROOT\batfile]
    "FriendlyTypeName"="Batch Script"


    PD: La plantilla se debe guardar en la ruta C:\Windows\ShellNew\Plantilla.bat para que tenga efecto.






    • Práctica

    Llegar a dominar un lenguaje es dificil, por ese motivo te invito a que vayas poniendo a prueba tus avances en la sección de retos de Scripting.

    -> Zona de retos Scripting






    • Ética

    La programación no fue creada con el fín de hacer el mal, ni virus, ni autoruns, ni nada por el estilo, Aquí puedes aprender lo básico para crear una bomba lógica, pero si buscas un tutorial orientado a dañar sistemas operativos en estas páginas no lo vas a encontrar.

    Intentar superarse a uno mismo realizando cada vez scripts más complicados es una cosa genial y llena de mérito!, pero lo que no es tiene nada de mérito es copiar códigos de terceras personas en tu propio beneficio (Buscando puro reconocimiento inmerecido), es un acto de inmadurez el cual personalmente desprecio.

    Si copias algo, pide permiso al autor del código, si ves dificil la taréa de contactar con el, pon agradecimientos/créditos en tu code haciendo referencia a los códigos que has obtenido de terceras personas, pues quien sabe si en un futuro llegas a ser un excelente programador y te achacan de copión, lammer, y ladrón, por no haber puesto los créditos necesarios en tus scripts... No cuesta nada!








    Eleкtro

    #3
    3. LOS PRIMEROS PASOS






    • 3.1 Una Identidad

    Estamos a punto de crear algo nuestro, es casi como de nuestra sangre y por eso lo vamos a tratar como si fuese nuestro hijo, nuestro fruto,
    Vamos a bautizar nuestro script con un nombre!

    Otorgarle un nombre a un script sirve para identificar que archivo bat está ejecutando la CMD, o simplemente dejar nuestra firma en el, y para ello utilizaremos el comando Title

    Este paso lo haremos directamente abriendo la CMD y escribiendo:
    Title Elektro Junior



    Podemos comprobar como la barra de título de la ventana ha cambiado.








    Eleкtro

    #4
    • 3.2 La Voz

    Si queremos expresarnos para mostrar cualquier cosa que se nos ocurra en la pantalla, o si queremos mostrar cualquier tipo de información, tendremos que usar el comando Echo

    Este comando es uno de los más sencillos de aprender y en el ejemplo lo usaremos directamente en la CMD.

    Se puede mostrar un mensaje de dos maneras,

    La primera manera es:
    Echo Mensaje

    La segunda manera es añadiendo el caracter + o : o . de esta forma:
    Echo. Mensaje
    Echo: Mensaje
    Echo+ Mensaje

    La única diferencia es que la segunda manera añade un espacio al principio del mensaje.

    Si queremos mostrar una línea en blanco usaremos siempre la segunda manera, pero sin escribir ningún mensaje:

    Echo.

    Echo:

    Echo+

    Aquí podeis ver las diferencias:


    TIP: Para no llenar nuestros scripts de interminables comandos Echo+ podemos mostrar un mensaje y añadir una línea en blanco debajo, usando el comando MORE de esta manera:
    Echo Mensaje | MORE

    TIP: Podemos usar el comando MORE cuantas veces queramos (Se añadirá una línea en blanco por cada uso):
    Echo Mensaje | MORE | MORE | MORE | MORE









    Eleкtro

    #5
    • 3.3 El Silencio

    La CMD siempre se encargará de mostrar todas las líneas que se van procesando de un script (resulta muy molesto), a menos que le indiques que no quieres que te informe de esos datos.

    La "voz" de la CMD se puede activar/desactivar usando el parámetro ON y OFF comando Echo:
    Echo OFF
    Echo ON

    Como norma general en la primera línea de nuestros scripts siempre usaremos ese comando para desactivar "la voz", aunque en un script le tendremos que añadir el caracter @ así:
    @Echo OFF

    Esa sí que será nuestra primera línea del script !!

    NOTA: El caracter  @ indica que el comando que le prosigue a la derecha de él no devuelva "el echo", así que cualquier línea que empiece con el caracter @ no devolverá "la voz" de la CMD.

    NOTA: Por defecto Echo siempre está activado (ON)

    Algunos comandos también nos dirán cosas innecesarias, para silenciar el echo (o salida) de un comando utilizaremos el operador de redirección >, así:
    Comando >NUL



    PD: Más tarde aprenderemos a redireccionar y aprenderemos que es "NUL".








    Eleкtro

    • 3.4 La escritura

    En la vida real es muy importante saber escribir, y sobretodo saber escribir bien, con sus comas, sus puntos, sus punto y coma, etc...
    Si no escribes algo correctamente quizás una persona no pueda entender tu escritura y se confunda, pues en Batch sucede lo mismo.

    Las comillas, las comillas son un elemento IMPRESCINDIBLE, las debes usar extremadamente para casi todo, muchos errores en los scripts son causa de no haber usado las comillas apropiadamente (o un uso indebido de otros operadores).

    Más adelante lo explicaré con detalles.








    Eleкtro

    #7
    • 3.5 La lectura

    Cuando séas un experto en Batch lograrás hacer códigos complejos y con cientos o miles de líneas de código, solo de imaginarlo... puede resultar algo lioso la lectura, ¿Verdad?

    Por suerte todo lenguaje de programación/scripting tiene soporte para añadir líneas de comentarios a los scripts, podemos usar estas líneas de comentario para fácilitar la lectura del script, como recordatorio personal para no olvidar que hace una función, o para añadir información extra para el usuario.

    El comando para añadir una línea de comentario es REM

    @Echo OFF
    REM Esto es una línea de comentario
    Pause >NUL


    NOTA: Una línea de comentario no interfiere con los operadores de Batch, es decir, puedes escribir todos los caracteres que desees sin encerrarlos entrecomillas.








    Eleкtro

    #8
    • 3.6 Caminar

    Un script no tiene patas, pero la ejecución del código no se detiene, y si no hacemos algo para detenerla, la ventana de la CMD se cerrará al finalizar la ejecución de nuestro código, muchas veces sin darnos opción a ver que está pasando.

    Se puede detener la ejecución usando el comando Pause.

    Un ejemplo:
    @Echo OFF
    Echo Esto es un test !
    Pause


    TIP: Para silenciar el echo del comando Pause lo usaremos de esta manera:
    Pause >NUL



    Muchas veces necesitaremos dividir nuestro script en bloques, en varías partes imaginarias (o no tán imaginarias) y dirigirnos hacia esa parte, como por ejemplo las subrutinas.

    Una parte de un script se tiene que dividir usando las denominadas etiquetas

    Una etiqueta se identifica porque siempre lleva el caracter : delante del nombre, así:

    :Soy una etiqueta

    Debajo de la etiqueta se puede colocar las líneas de código que deseemos, esas líneas formaran un conjunto con la etiqueta y por eso tenemos que imaginarla como una "parte" imaginaria dividida del scirpt, ya que esas líneas solo se procesarán si se llama a la etiqueta (O si se procesa secuencialmente sin haber llamado a ninguna etiqueta antes).

    Para "caminar" hacia una etiqueta usaremos el comando GOTO seguido del nombre de la etiqueta a la que queremos ir.

    Véamos un ejemplo de todo esto:


    @Echo OFF

    Goto :Etiqueta_2

    :Etiqueta_1
    Echo Estoy en la etiqueta 1 !

    :Etiqueta_2
    Echo Estoy en la etiqueta 2 !

    Pause>NUL




    Como se puede comprobar, el contenido de la "Etiqueta_1" no se llega a procesar porque una línea más arriba se procesa primeramente el comando GOTO y este se dirige directamente a la "Etiqueta_2", omitiendo todo el contenido de código que haya antes de dicha etiqueta.

    NOTA: Jamás escribiremos nombres de etiquetas con espacios en el nombre, ya que todo lo que haya después del espacio se asignaría como un argumento de la etiqueta.

    NOTA: Puede haber uno o varios espacios entre el comando y el nombre de la etiqueta:

    Goto:Etiqueta
    Goto :Etiqueta
    Goto            :Etiqueta








    Eleкtro

    #9
    • 3.7 Memorizar

    Llegamos a un punto interesante, aprenderemos a memorizar las cosas usando las  variables.

    Como ya expliqué, una variable es un espacio virtual donde podemos almacenar datos/valores.

    Podemos bautizar a una variable con el nombre que deseemos.

    Para guardar un valor en una variable usaremos el comando SET
    Set MiVariable=Valor

    NOTA: La acción de crear una variable (usar el comando set) se denomina "Setear".

    Pero como ya expliqué que las comillas son muy importantes PARA TODO, nos acostumbraremos a setear utilizando comillas, es muy importante hacerlo aunque no es obligatorio.
    Set "MiVariable=Valor"

    Y en algunos casos muy especiales las deberemos usar así:
    Set MiVariable="Valor"






    Para que el intérprete de comandos reconozca una variable, debemos escribirla seguido del caracter % dos veces.
    %MiVariable%

    Véamos un ejemplo:
    @Echo OFF
    Set "Variable=Esto es lo que hay dentro de la variable"
    Echo %VARIABLE%
    Pause >NUL




    Ahora otro ejemplo, sin usar las comillas:
    @Echo OFF
    Set Variable=Valor1_&_Valor2
    Echo %VARIABLE%
    Pause >NUL




    ¿Ves lo que sucede por no usar las comillas EN TODO?
    Al no encerrar la variable con las comillas dobles y al mismo tiempo haber usado el caracter reservado de Batch &, el intérprete entiende que todo lo que hay a la derecha del caracter & es un comando, y dará error.



    TIP: Se puede eliminar de la memoría una variable simplemente seteando el nombre de la variable, sin añadir ningún valor, de esta forma:
    Set "Variable="



    Aquí terminan nuestros primeros pasos, enhorabuena, ya estás preparado para comprender mejor las cosas.