educación, informática y demás

Comandos

«Comandeando» con Windows

userBackup.bat (versión 1)

Crea un script llamado userBackup.bat este script recibirá por parámetro el nombre de un usuario del sistema. El script deberá crear un directorio con el nombre del usuario dentro del directorio C:\Backup\2021. Este directorio será el directorio de backups de dicho usuario.

Dentro del directorio de backups del usuario se deberán crear los siguientes directorios: docs, music, images, videos y desktop.

Una vez creados los directorios, el script añadirá al fichero info.log dentro del directorio de backups del usuario la fecha y hora actual y un listado del contenido completo del directorio de backups del usuario.

Solución

Primera versión del script

userBackup.bat (versión 2)

El script funciona y está muy bien, pero ¿qué pasa si el usuario no pasa parámetro? El script hace cosas que no debería, de hecho no debería hacer nada si no se pasa ningún parámetro.

Por tanto, deberíamos controlar esta situación, que no se pase el nombre de un usuario en el primer parámetro es un error. Este proceso en el que comprobamos situaciones de error se llama control de errores.

En este caso, si no se pasa parámetro entonces mostramos un mensaje de error para que el usuario sepa que es lo que sucede y después terminar la ejecución del script.

Para ello, utilizaremos el comando IF como sentencia condicional. Como no sabemos como funciona el comando IF debemos consultar la ayuda del mismo.

Ayuda del comando IF
Faltaría la cadena2

Ahora estaría bien, porque si no me pasan nada en el primer parámetro, entonces %usuario% se sustituiría por una cadena vacía por tanto quedaría así la comparación:

No se corrige el error, tan solo nos avisa.

A nosotros nos interesa para este tipo de control de errores la condición cadena1==cadena2. Vamos a comproba si el primer parámetro, que se almacena en la variable especial %1, está vacío, es decir es == a nada.

¿Qué hacemos para corregir el error? Terminar con la ejecución del programa. Para ello vamos a utilizar saltos incondicionales a etiquetas.

Solo cuando la variable usuario esté vacía se cumplirá la condición del if, entonces saltará a la etiqueta ERR_NOPARAM.

Esto es programación espagueti y habría que evitarla, sin embargo en este tipo de scripts no tenemos la opción de utilizar funciones. Lo que si podemos hacer es utilizar paréntesis para poder ejecutar varios comandos si se cumple una condición.

Si se cumple la condición solo se puede ejecutar un comando, el que queramos pero solo uno. Hay una forma de ejecutar varios comandos, utilizando paréntesis, pero tiene que hacerse tal cual aparece en la figura.

Si se cumple la condición entonces se ejecutan los comandos que hay entre parántesis.

El comando exit con la opción /B termina la ejecución del script y el número que se pone a continuación es el código de error que se devuelve.

Cuando termina de ejecutarse cualquier aplicación siempre se devuelve un código de error. Si el código de error es 0 sigunifica que todo ha ido bien. Si se devuelve otra cosa, ha habido un error.

Errorlevel es una variable de entorno dinámica, que almacena el codigo de error devuelto por el último comando ejecutado. Después del echo, como todo ha ido bien, contiene un 0. Después del copy, como se ha producido un error almacena un 1.

Vamos a probar nuestro script sin parámetros

userBackup.bat (versión 3)

Script logMe.bat

Crea un script llamado logMe.bat que reciba por parámetro la ruta de un fichero o directorio. Se almacena información de dicho fichero o directorio en un fichero de log. Si no se pasa parámetro deberá mostrar un mensaje de error y terminar la ejecución (parámetro obligatorio).

Si la ruta del fichero o directorio pasado no existe, se deberá mostrar un mensaje de error y terminar la ejecución.

Se debe añadir la información del fichero o directorio cuya ruta se ha proporcionado por parámetro en el fichero logMe.log, Después, en otra línea distinta, se deberá almacenar la fecha y hora actuales.

Solución

Estructura del script

Siempre vamos a tener, más o menos, la misma estructura en nuestros script. Primero, la desactivación del echo y los comentarios, después variables, control de errores y función del script.

Primero definimos las variables que nos ayudarán a dejar el script con mejor legibilidad y facilidad de mantenimiento.

Después el control de errores, es decir esas situaciones en las que no podemos continuar con la ejecución del script. Por ejemplo que no me pasen la ruta del fichero o que el fichero no exista.

Por último realizamos la acción

¿Qué hace esto?

Dejar una respuesta