Anuncio

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 uno.

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

1. Comparar valores

Una de las cosas básicas que generalmente debe 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 una secuencia de comandos que compare el espacio libre actual en el disco duro con su límite, debe crear la siguiente secuencia de comandos por lotes y guardarla como un archivo .bat.

instagram viewer
@echo off. establecer 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%" Límite de eco = "% DriveLimit%" Si% FreeSpace% GTR% DriveLimit% (Eco Hay suficiente espacio libre. ) else (Eco No hay suficiente espacio libre. )

WMIC es el componente de Instrumental de administración de Windows de Windows que viene con una variedad de comandos que puede usar para extraer información de la PC. Así es como el comando "wmic" en este script llama al espacio "logicaldisk" y lo coloca en la variable FreeSpace. Ahora puede 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 has usado blat, tenemos un artículo que te muestra cómo configurar blat. ¿No está familiarizado con la configuración de trabajos programados? Te 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 WindowsSu tiempo es demasiado valioso para perderlo con tareas repetitivas. Permítanos mostrarle cómo automatizar y programar tareas. También tenemos algunos buenos ejemplos. Lee mas .

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. 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 último o si necesita una actualización.

Así es como se ve este script.

@echo off. para / f "tokens = 4-5 delims =. "%% i en ('ver') establece VERSION = %% i. %% j. si "% version%" == "6.0" se hace eco de Windows Vista. si "% version%" == "6.1" se hace eco de Windows 7. si "% version%" == "6.2" se hace eco de Windows 8. si "% version%" == "6.3" se hace eco de Windows 8.1. si "% version%" == "10.0" se hace eco de Windows 10. 

Así es como se ve la salida de este script.

Archivo por lotes, Windows, Programación

La capacidad de comparar cadenas en lote abre una lista completa de posibilidades. Si exploras todos los información que puede obtener de un comando WMIC verá cuántas estadísticas sobre su computadora puede monitorear. Puede utilizar trabajos por lotes programados para alertar 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 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 scripts de Windows para procesar datos en un archivo de Excel 5 útiles scripts de Windows VB para automatizar el uso de su computadoraDesde el monitoreo del sitio web hasta los informes del sistema, aprenda a automatizar todas las cosas con estos increíbles scripts de VB que puede codificar en Windows ahora mismo. Lee mas ; 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. ) else (el archivo rem no existe. )

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 para monitorear si se crean nuevos registros de errores para poder enviar un alerta.

4. Comprobar 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 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 lo 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 manera, puede solucionar el problema de manera 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. De lo contrario, debe enviarse un correo electrónico.

@echo off. xcopy C: \ somefolder E: \ backupfolder. SI% 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 usando 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 bonita extensa lista de códigos de error.

5. Verificar parámetros faltantes

La última declaració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 una secuencia de comandos 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 eso.

@echo off. SI [% 1] == [] ( GOTO sub_message. ) ELSE ( xcopy% 1 E: \ carpeta de respaldo. ) GOTO eof.: sub_message. echo Olvidó especificar su ruta.: eof.

Si nunca antes ha utilizado 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, y así sucesivamente.

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 creando su primera aplicación VBAo 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 secuencias de comandos por lotesPowerShell es lo que obtendría si cruzara el símbolo del sistema con Batch Scripting, agregara algunas características adicionales y lo pateara varias muescas. Aquí hay varias razones por las que deberías probarlo. Lee mas , para realizar muchas de las mismas tareas para las que utiliza actualmente los trabajos por lotes.

Ryan tiene una licenciatura en ingeniería eléctrica. Ha trabajado 13 años en ingeniería de automatización, 5 años en TI y ahora es ingeniero de aplicaciones. Ex editor gerente de MakeUseOf, ha hablado en conferencias nacionales sobre visualización de datos y ha aparecido en la televisión y radio nacionales.