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.
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íaecho %variable%
cd
devuelve el directorio donde está posicionada la consola
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.
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 derem
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 🖖