
Brian Curtis
0
1033
105
Si hace mucho trabajo en archivos por lotes de Windows, el 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.
Si está listo para comenzar a crear secuencias de comandos, comencemos!
1. Comparar valores
Una de las cosas básicas que generalmente necesitará hacer en un script por lotes es compara 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 es inferior a 3 GB, desea recibir un informe por correo electrónico que diga, “Espacio en disco duro demasiado bajo.”
Para crear un script que compare el espacio libre actual en el disco duro con su límite, debe crear el siguiente script por lotes y guardarlo como un archivo .bat.
@echo off establece DriveLimit = 300000000 para / f "usebackq delims == tokens = 2" %% x in ('wmic logicaldisk donde "DeviceID =' C: '" get FreeSpace / format: value') establece FreeSpace = %% x Echo FreeSpace = "% FreeSpace%" Echo Limit = "% DriveLimit%" If% FreeSpace% GTR% DriveLimit% (Echo Hay suficiente espacio libre.) más (Echo No hay suficiente espacio libre).
WMIC es el componente de Windows Management Instrumentation de Windows que viene con una variedad de comandos que puede usar para extraer información de la PC. Así es como el “wmic” comando en este script llama al “disco lógico” espacio y lo coloca en la variable FreeSpace. Ahora solo puedes reemplazar la línea “Eco No hay suficiente espacio libre” con un comando de correo electrónico blat para enviarle una alerta.
Finalmente, configure este script como un trabajo por lotes programado de Windows que se ejecuta diariamente.
Si nunca antes ha usado blat, tenemos un artículo que le muestra cómo configurar blat. ¿No está familiarizado con la configuración de trabajos programados? Lo cubrimos con un artículo sobre cómo configurar tareas programadas de Windows 4 Tareas aburridas que puede automatizar con el Programador de tareas de Windows 4 Tareas aburridas que puede automatizar con el Programador de tareas de Windows Su tiempo es demasiado valioso para perderlo con tareas repetitivas . Permítanos mostrarle cómo automatizar y programar tareas. También tenemos algunos buenos ejemplos. .
2. Comparaciones de cadenas
Otra valiosa comparación de IF que puede hacer en un trabajo por lotes es comparando cadenas.
En el siguiente ejemplo, verá cómo verificar su versión de Windows utilizando un trabajo por lotes. Entonces 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 último, o si necesita una actualización.
Así es como se ve este script.
@echo off para / f "tokens = 4-5 delims =." %% i in ('ver') establece VERSION = %% i. %% j if "% version%" == "6.0" echo Windows Vista . si "% version%" == "6.1" echo Windows 7 si "% version%" == "6.2" echo Windows 8 si "% version%" == "6.3" echo Windows 8.1 si "% version%" == "10.0" echo Windows 10.
Así es como se ve la salida de este script.
La capacidad de comparar cadenas en 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. Puede usar trabajos por lotes programados para alertar sobre estos.
3. Compruebe si existe un archivo
Otra situación útil en la que una instrucció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 programarse para verificar si hay nuevos archivos de datos entrantes en un directorio específico.
Luego, el trabajo por lotes puede copiar ese archivo en otra ubicación donde pueda procesarse, o iniciar un script de Windows que procesa el archivo en una salida de Excel.
(Hemos escrito en el pasado sobre cómo usar los scripts de Windows para procesar datos en un archivo de Excel. 5 Scripts útiles de Windows VB para automatizar su computadora Use 5 Scripts útiles de Windows VB para automatizar el uso de su computadora Desde el monitoreo del sitio web hasta los informes del sistema, aprenda cómo para automatizar todas las cosas con estos increíbles scripts de VB que puedes codificar en Windows ahora mismo; una buena lectura de fondo).
Usar un archivo por lotes para verificar si un archivo existe en un directorio es rápido y fácil. Así es como se ve ese guión.
@echo off si existe c: \ temp \ datafile.txt (% WINDIR% \ SysWOW64 \ cmd.exe cscript LoadToExcel.vbs) más (el archivo rem no existe)
La comparación SI EXISTE es útil para muchas cosas.
Por ejemplo, si tiene un sistema o 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 para monitorear si se crean nuevos registros de errores para que pueda enviar una alerta.
4. Compruebe si un comando falló
Un aspecto de las secuencias de comandos de archivos por lotes que muy pocas personas de TI o programadores usan es comprobación de errores.
Hay una gran cantidad de trabajos por lotes que están realizando tareas críticas de TI, como hacer 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 notan.
Es mucho más inteligente recibir una alerta cuando su trabajo por lotes ha fallado un comando antes de la gente empieza a darse cuenta. De esta forma, puede solucionar el problema de forma proactiva.
Puede hacerlo 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%. Si la aplicación o comando devolvió un cero, todo está bien. Si no, entonces necesita enviarse un correo electrónico.
@echo off xcopy C: \ somefolder E: \ backupfolder IF% ERRORLEVEL% NEQ 0
No tiene que tomar la ruta del correo electrónico. Siempre puede escribir un registro de errores que pueda verificar todas las mañanas o iniciar una segunda aplicación o comando que intente hacer la copia utilizando un comando alternativo. Cualquiera sea la acción que desee tomar, IF% ERRORLEVEL% le permite hacerlo.
Si prefiere usar una instrucción IF para verificar códigos de error específicos, Windows ofrece una lista bastante extensa de códigos de error.
5. Verifique los parámetros faltantes
La última instrucción IF útil no es un comando específico, sino que verifica que el script recibió los parámetros de entrada apropiados.
Por ejemplo, supongamos que ha escrito un script que realiza 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.
Obviamente, no puede ejecutar correctamente su script sin la ruta especificada, por lo que puede colocar una instrucción IF al comienzo de su script para asegurarse de que se ingresaron ambos parámetros.
Así es como se ve.
@echo off IF [% 1] == [] (GOTO sub_message) ELSE (xcopy% 1 E: \ backupfolder) GOTO eof: sub_message echo Olvidó especificar su ruta. : eof
Si nunca antes ha usado parámetros con scripts 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, etc..
Los trabajos por lotes pueden ser poderosos
Muchas personas comienzan a usar trabajos por lotes para tareas simples que deben ejecutarse en secuencia. Con las declaraciones IF es posible agregar mucha más inteligencia a sus scripts.
Por supuesto, si realmente quiere mejorarlo, puede considerar echar un vistazo a VBA con nuestra guía sobre cómo crear su primera aplicación de VBA, o tal vez incluso aprender programación de Python.
A menudo puede usar lenguajes de programación más avanzados como estos, o aprender a usar PowerShell 5 Razones por las que debe usar PowerShell en lugar de Batch Scripting 5 Razones por las que debe usar PowerShell en lugar de Batch Scripting PowerShell es lo que obtendría si cruzara el Símbolo del sistema con Batch Scripting, incluyó algunas características adicionales y lo incrementó varias veces. Aquí hay varias razones por las que deberías probarlo. , para realizar muchas de las mismas tareas para las que actualmente utiliza trabajos por lotes.