Windows Batch Scripting como un pro

Publicado el 25.02.2024 a las 22:24

Logo de fjmduran

Windows Batch Scripting como un pro

  1. ¿Qué es Windows Batch Scripting o Batch Script?

  2. Comandos de Windows Batch Scripting

    • Declarar variable

    • Imprimir en consola

    • Obtener ruta donde está posicionado el cursor de la consola

    • Insertar comentario

    • Estructura de control (if)

    • Bucle

    • Funciones

    • Operadores de comparación

    • Entrada de usuario

    • Copiando ficheros

    • Arrays

Windows Batch Scripting como un pro

Llevo más de 20 años trabajando en entornos industriales desde que comencé como becario en el verano de 2003.


Durante todo este tiempo el 100% de los sistemas operativos que me he encontrado en las instalaciones ha sido Windows.


Siempre que el cliente me lo permite, instalo en los servidores en los que trabajo una consola que acepte comandos de Bash como Git Bash.


Pero hay instalaciones en los que no te dejan instalar nada, así que para automatizar algunas tareas tengo que recurrir a la famosa consola de Windows cmd


Es cierto que Microsoft incluyó en su PowerShell muchos comandos de Bash, pero no todos.


Voy a ir recogiendo en este artículo los comandos que me son útiles.


Tengo otro artículo donde voy incluyendo los comandos de Bash que me resultan útiles.

Imagen del artículo

Aprendiendo Bash

Comandos Bash más importantes para moverte por la terminal de Unix con soltura

¿Qué es Windows Batch Scripting o Batch Script?

Si tienes Windows, seguro que te suenan los archivos con extensión .bat


Son archivos de procesamiento por lotes de Windows que utilizan un lenguaje de script llamado Batch Script o Windows Batch Scripting.

Este lenguaje de scripting es simple y se utiliza para automatizar tareas en Windows.


Los comandos y estructuras de control de Batch Script nos permiten realizar diversas tareas, como copiar archivos, ejecutar programas, realizar operaciones en archivos y directorios...


Es bastante limitado en comparación con otros lenguajes de scripting, pero es efectivo para realizar tareas básicas y de automatización en entornos Windows.

Comandos de Windows Batch Scripting

  • set declara una variable. set variable=valor
  • echo imprimirá un mensaje en consola. Por ejemplo, si quieres imprimir el valor de una variable sería echo %variable%
  • cd devuelve el directorio donde está posicionada la consola
creando y leyendo variable con windows batch scripting

Con los comandos anteriores podríamos almacenar la ruta donde está posicionada nuestra consola en una variable a la que podríamos llamar currentPath de la siguiente manera.

set currentPath=%cd%

Quizás te estés preguntando para qué podría servirte eso, por ejemplo para registrar un servicio de Windows sin la necesidad de tener que escribir la ruta donde estás.

set currentPath=%cd%
sc create "fjmduran service" binpath="%currentPath%\myExe.exe"

Por cierto, si quieres saber cómo crear un servicio de Windows con C# te lo dejo a continuación.

Imagen del artículo

Crear un servicio con C# y .NET6 o posteriores

Te explico cómo crear un servicio con .NET6 y versiones posteriores como .NET7. Podrás correr el servicio en cualquier Sistema Operativo. Para te enseñaré a crear aplicaciones que corren en segundo plano o background.


  • Utilizaremos rem para insertar comentarios. Todo el texto que sigue después de rem en la misma línea se trata como un comentario y se ignora durante la ejecución del script.
  • Estructura de control

    if condicion (
        rem código si la condición es verdadera
    ) else (
        rem código si la condición es falsa
    )
  • Bucle

    for %%i in (1 2 3 4 5) do (
        echo %%i
    )
                
    :etiqueta
    rem código
    goto etiqueta
  • Funciones

    :miFuncion
    rem código de la función
    goto :eof
  • Operadores de comparación

    if %variable% equ valor (
        rem código si la variable es igual a valor
    )
  • Entrada de usuario

    set /p nombre=Ingrese su nombre:
    echo Hola, %nombre%
  • Copiando ficheros con Batch Script

    copy origen destino

    Por ejemplo:

    set currentPath=%cd%
    set appPath="D:\fjmduran\programacion\angular\comemos"
    
    copy "%appPath%\src" "%currentPath%\src"
    copy "%appPath%\src\environments" "%currentPath%\src\environments"
    copy "%appPath%\src\assets\icons" "%currentPath%\src\assets\icons"
    copy "%appPath%\src\assets\images" "%currentPath%\src\assets\images"
    

Arrays

Los arrays se definen entre paréntesis.

Si quieres definir un array de direcciones IP sería set servers=("192.168.1.101" "192.168.1.102" "192.168.1.103")


Hasta luego 🖖