Todo para trabajar con Windows: el mejor sistema operativo de Microsoft. Cubrimos todo, desde el programa Windows 10 Insider hasta Windows 11. Le brinda las últimas noticias sobre Windows 10 y más.

5 declaraciones IF para usar en secuencias de comandos por lotes de Windows más inteligentes

56

Si realiza mucho trabajo en archivos por lotes de Windows, la declaración IF ofrece una forma muy poderosa de agregar flexibilidad a sus scripts.

En este artículo, aprenderá acerca de los cinco tipos principales de declaraciones IF que puede usar en un archivo por lotes de Windows, cómo se ve la sintaxis correcta y un ejemplo realista para cada uno.

Si está listo para comenzar a crear secuencias de comandos, comencemos.

1 Comparar valores

Una de las cosas básicas que normalmente deberá hacer en un script por lotes es comparar dos valores y seguir un curso de acción diferente según la comparación.

Por ejemplo, supongamos que desea escribir un script por lotes que verifique diariamente el tamaño del disco duro de su computadora. Si tiene menos de 3 GB, desea recibir un informe por correo electrónico que diga "Espacio en el disco duro demasiado bajo".

Para crear una secuencia de comandos que compare el espacio libre actual en el disco duro con su límite, deberá crear la siguiente secuencia de comandos por lotes y guardarla como un archivo .bat.

@echo offset DriveLimit=300000000for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%xEcho FreeSpace="%FreeSpace%"Echo Limit="%DriveLimit%"If %FreeSpace% GTR %DriveLimit% (Echo There is enough free space.) else (Echo Not enough free space.)

En el script, WMIC es el componente Instrumental de administración de Windows (WMI) de Windows que viene con una variedad de comandos que puede usar para extraer información de su PC.

Así es como el comando "wmic" en este script llama al espacio de disco lógico y lo coloca en la variable FreeSpace .

Ahora puede simplemente reemplazar la línea Echo No hay suficiente espacio libre con un comando para enviarle una alerta por correo electrónico. Configure el script para que se ejecute diariamente.

Comparaciones de 2 cuerdas

Otra valiosa comparación IF que puede hacer en un trabajo por lotes es comparar cadenas.

En el siguiente ejemplo, verá cómo comprobar su versión de Windows mediante un trabajo por lotes. Luego puede comparar esto con su versión esperada de Windows.

Algunos usos de este script serían para auditorías de TI cuando necesite ejecutar rápidamente un script y asegurarse de que el sistema operativo actual sea el más reciente o si necesita una actualización.

Así es como se ve este script:

@echo offfor /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%jif "%version%" == "6.0" echo Windows Vista.if "%version%" == "6.1" echo Windows 7if "%version%" == "6.2" echo Windows 8if "%version%" == "6.3" echo Windows 8.1if "%version%" == "10.0" echo Windows 10.

Así es como se ve el resultado de este script:

5 declaraciones IF para usar en secuencias de comandos por lotes de Windows más inteligentes

La capacidad de comparar cadenas en un lote abre una lista completa de posibilidades. Si explora toda la información que puede obtener de un comando WMIC, verá cuántas estadísticas sobre su computadora puede monitorear.

Además, incluso puede usar trabajos por lotes programados para recibir alertas sobre estos.

3 Comprobar si existe un archivo

Otra situación útil en la que una declaración IF en un archivo por lotes es verificar la existencia de un archivo de datos.

Muchas veces, el trabajo por lotes es solo una herramienta de monitoreo que puede programar para verificar si hay nuevos archivos de datos entrantes en un directorio específico. Luego, puede copiar ese archivo a otra ubicación o iniciar algún script de Windows que procese el archivo en una salida de Excel.

Usar un archivo por lotes para verificar si existe un archivo en un directorio es rápido y fácil. Así es como se ve ese script:

@echo offif exist c:tempdatafile.txt (%WINDIR%SysWOW64cmd.exe cscript LoadToExcel.vbs) else (rem file doesn't exist)

La comparación SI EXISTE es útil para muchas cosas.

Por ejemplo, si tiene un sistema o una aplicación en ejecución que crea nuevos registros de errores en una carpeta específica cuando hay un problema, puede ejecutar un trabajo por lotes de vez en cuando. De esta manera, puede monitorear fácilmente si se crean nuevos registros de errores para poder enviar una alerta.

4 Comprobar si un comando falló

Un aspecto de las secuencias de comandos de archivos por lotes que muy pocos programadores o personas de TI utilizan es la comprobación de errores.

Hay muchos trabajos por lotes que realizan tareas críticas de TI, como realizar copias de seguridad de archivos importantes o ejecutar operaciones de copia de archivos. Cuando estos trabajos por lotes fallan, los sistemas fallan y las personas generalmente lo notan.

Es mucho más inteligente recibir una alerta cuando su trabajo por lotes ha fallado en un comando antes de que las personas comiencen a notarlo. De esta manera, puede solucionar el problema de forma proactiva.

Puede hacer esto utilizando la variable %errorlevel% que la mayoría de las aplicaciones y comandos devuelven después de ejecutarse. Todo lo que tiene que hacer es seguir su comando con el comando IF %ERRORLEVEL%.

@echo offxcopy C:omefolder E:backupfolderIF %ERRORLEVEL% NEQ 0 <blat command to send email>

Si la aplicación o el comando devuelve un cero, todo está bien. De lo contrario, debe enviarse un correo electrónico a usted mismo.

Sin embargo, no tienes que tomar la ruta del correo electrónico. Siempre puede escribir un registro de errores que puede revisar todas las mañanas, o iniciar una segunda aplicación o comando que intente hacer la copia usando un comando alternativo.

Además, si prefiere usar una declaración IF para verificar códigos de error específicos, Windows ofrece una lista bastante extensa de códigos de error del sistema.

5 Comprobar si faltan parámetros

La última instrucción IF útil no es para un comando específico, sino para verificar que el script recibió los parámetros de entrada apropiados.

Por ejemplo, supongamos que ha escrito un script que ejecuta un comando xcopy desde una carpeta de entrada a una carpeta de red común utilizada por un equipo. El usuario solo necesita seguir el nombre de su script con los parámetros que definen su ruta de archivo personal.

No puede ejecutar correctamente su secuencia de comandos sin la ruta especificada, por lo que es posible que desee colocar una declaración IF al comienzo de su secuencia de comandos para asegurarse de que se ingresen ambos parámetros.

@echo offIF [%1]==[] (GOTO sub_message) ELSE (xcopy %1 E:backupfolder)GOTO eof:sub_messageecho You forgot to specify your path.:eof

Si nunca antes ha usado parámetros con secuencias de comandos por lotes, el símbolo de porcentaje seguido de un número representa la variable del parámetro. %1 es el primer parámetro, %2 es el segundo y así sucesivamente.

En general, las declaraciones IF son demasiado útiles y no necesita escribir demasiados códigos para usarlas. Por supuesto, si desea avanzar un poco más, podría considerar echar un vistazo a VBA con nuestra guía sobre cómo crear su primera aplicación VBA.

Los trabajos por lotes pueden ser poderosos

Muchas personas comenzaron a usar trabajos por lotes para tareas simples que deben ejecutarse secuencialmente. Afortunadamente, con las declaraciones IF, es posible agregar mucha más lógica a sus scripts.

Además, a menudo puede usar lenguajes de programación más avanzados y usar PowerShell para realizar muchas de las mismas tareas para las que actualmente usa trabajos por lotes.

Fuente de grabación: www.makeuseof.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More