{"id":277791,"date":"2023-10-23T17:21:00","date_gmt":"2023-10-23T14:21:00","guid":{"rendered":"https:\/\/howto.mediadoma.com\/?p=277791"},"modified":"2025-03-14T08:24:22","modified_gmt":"2025-03-14T05:24:22","slug":"5-declaraciones-if-para-usar-en-secuencias-de-comandos-por-lotes-de-windows-mas-inteligentes","status":"publish","type":"post","link":"https:\/\/howto.mediadoma.com\/es\/5-declaraciones-if-para-usar-en-secuencias-de-comandos-por-lotes-de-windows-mas-inteligentes\/","title":{"rendered":"5 declaraciones IF para usar en secuencias de comandos por lotes de Windows m\u00e1s inteligentes"},"content":{"rendered":"\n<p>Si realiza mucho trabajo en archivos por lotes de Windows, la declaraci\u00f3n IF ofrece una forma muy poderosa de agregar flexibilidad a sus scripts.<\/p>\n<p>En este art\u00edculo, aprender\u00e1 acerca de los cinco tipos principales de declaraciones IF que puede usar en un archivo por lotes de Windows, c\u00f3mo se ve la sintaxis correcta y un ejemplo realista para cada uno.<\/p>\n<p>Si est\u00e1 listo para comenzar a crear secuencias de comandos, comencemos.<\/p>\n<h2>1 Comparar valores<\/h2>\n<p>Una de las cosas b\u00e1sicas que normalmente deber\u00e1 hacer en un script por lotes es comparar dos valores y seguir un curso de acci\u00f3n diferente seg\u00fan la comparaci\u00f3n.<\/p>\n<p>Por ejemplo, supongamos que desea escribir un script por lotes que verifique diariamente el tama\u00f1o del disco duro de su computadora. Si tiene menos de 3 GB, desea recibir un informe por correo electr\u00f3nico que diga &quot;Espacio en el disco duro demasiado bajo&quot;.<\/p>\n<p>Para crear una secuencia de comandos que compare el espacio libre actual en el disco duro con su l\u00edmite, deber\u00e1 crear la siguiente secuencia de comandos por lotes y guardarla como un archivo .bat.<\/p>\n<pre><code>@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.)<\/code><\/pre>\n<p>En el script, <strong>WMIC<\/strong> es el componente Instrumental de administraci\u00f3n de Windows (WMI) de Windows que viene con una variedad de comandos que puede usar para extraer informaci\u00f3n de su PC.<\/p>\n<p>As\u00ed es como el comando &quot;wmic&quot; en este script llama al espacio de <strong>disco l\u00f3gico<\/strong> y lo coloca en la variable <strong>FreeSpace .<\/strong><\/p>\n<p>Ahora puede simplemente reemplazar la l\u00ednea <strong>Echo No hay suficiente espacio libre<\/strong> con un comando para enviarle una alerta por correo electr\u00f3nico. Configure el script para que se ejecute diariamente.<\/p>\n<h2>Comparaciones de 2 cuerdas<\/h2>\n<p>Otra valiosa comparaci\u00f3n IF que puede hacer en un trabajo por lotes es comparar cadenas.<\/p>\n<p>En el siguiente ejemplo, ver\u00e1 c\u00f3mo comprobar su versi\u00f3n de Windows mediante un trabajo por lotes. Luego puede comparar esto con su versi\u00f3n esperada de Windows.<\/p>\n<p>Algunos usos de este script ser\u00edan para auditor\u00edas de TI cuando necesite ejecutar r\u00e1pidamente un script y asegurarse de que el sistema operativo actual sea el m\u00e1s reciente o si necesita una actualizaci\u00f3n.<\/p>\n<p>As\u00ed es como se ve este script:<\/p>\n<pre><code>@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.<\/code><\/pre>\n<p>As\u00ed es como se ve el resultado de este script:<\/p>\n<p><a href=\"https:\/\/howto.mediadoma.com\/wp-content\/uploads\/2022\/10\/post-189893-633fa24c02082.png\" data-rel=\"lightbox\" ><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/howto.mediadoma.com\/wp-content\/uploads\/2022\/10\/post-189893-633fa24c02082.png\" alt=\"5 declaraciones IF para usar en secuencias de comandos por lotes de Windows m\u00e1s inteligentes\" ><\/a><\/p>\n<p>La capacidad de comparar cadenas en un lote abre una lista completa de posibilidades. Si explora toda la <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/aa394531(v=vs.85).aspx\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">informaci\u00f3n que puede obtener de un comando WMIC<\/a>, ver\u00e1 cu\u00e1ntas estad\u00edsticas sobre su computadora puede monitorear.<\/p>\n<p>Adem\u00e1s, incluso puede usar trabajos por lotes programados para recibir alertas sobre estos.<\/p>\n<h2>3 Comprobar si existe un archivo<\/h2>\n<p>Otra situaci\u00f3n \u00fatil en la que una declaraci\u00f3n IF en un archivo por lotes es verificar la existencia de un archivo de datos.<\/p>\n<p>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\u00edfico. Luego, puede copiar ese archivo a otra ubicaci\u00f3n o iniciar alg\u00fan script de Windows que procese el archivo en una salida de Excel.<\/p>\n<p>Usar un archivo por lotes para verificar si existe un archivo en un directorio es r\u00e1pido y f\u00e1cil. As\u00ed es como se ve ese script:<\/p>\n<pre><code>@echo offif exist c:tempdatafile.txt (%WINDIR%SysWOW64cmd.exe cscript LoadToExcel.vbs) else (rem file doesn't exist)<\/code><\/pre>\n<p>La comparaci\u00f3n SI EXISTE es \u00fatil para muchas cosas.<\/p>\n<p>Por ejemplo, si tiene un sistema o una aplicaci\u00f3n en ejecuci\u00f3n que crea nuevos registros de errores en una carpeta espec\u00edfica cuando hay un problema, puede ejecutar un trabajo por lotes de vez en cuando. De esta manera, puede monitorear f\u00e1cilmente si se crean nuevos registros de errores para poder enviar una alerta.<\/p>\n<h2>4 Comprobar si un comando fall\u00f3<\/h2>\n<p>Un aspecto de las secuencias de comandos de archivos por lotes que muy pocos programadores o personas de TI utilizan es la comprobaci\u00f3n de errores.<\/p>\n<p>Hay muchos trabajos por lotes que realizan tareas cr\u00edticas 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.<\/p>\n<p>Es mucho m\u00e1s 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.<\/p>\n<p>Puede hacer esto utilizando la variable %errorlevel% que la mayor\u00eda de las aplicaciones y comandos devuelven despu\u00e9s de ejecutarse. Todo lo que tiene que hacer es seguir su comando con el comando <strong>IF %ERRORLEVEL%<\/strong>.<\/p>\n<pre><code>@echo offxcopy C:omefolder E:backupfolderIF %ERRORLEVEL% NEQ 0 &lt;blat command to send email&gt;<\/code><\/pre>\n<p>Si la aplicaci\u00f3n o el comando devuelve un cero, todo est\u00e1 bien. De lo contrario, debe enviarse un correo electr\u00f3nico a usted mismo.<\/p>\n<p>Sin embargo, no tienes que tomar la ruta del correo electr\u00f3nico. Siempre puede escribir un registro de errores que puede revisar todas las ma\u00f1anas, o iniciar una segunda aplicaci\u00f3n o comando que intente hacer la copia usando un comando alternativo.<\/p>\n<p>Adem\u00e1s, si prefiere usar una declaraci\u00f3n IF para verificar c\u00f3digos de error espec\u00edficos, Windows ofrece una <a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/ms681382(v=vs.85).aspx\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">lista bastante extensa de c\u00f3digos de error del sistema<\/a>.<\/p>\n<h2>5 Comprobar si faltan par\u00e1metros<\/h2>\n<p>La \u00faltima instrucci\u00f3n IF \u00fatil no es para un comando espec\u00edfico, sino para verificar que el script recibi\u00f3 los par\u00e1metros de entrada apropiados.<\/p>\n<p>Por ejemplo, supongamos que ha escrito un script que ejecuta un comando xcopy desde una carpeta de entrada a una carpeta de red com\u00fan utilizada por un equipo. El usuario solo necesita seguir el nombre de su script con los par\u00e1metros que definen su ruta de archivo personal.<\/p>\n<p>No puede ejecutar correctamente su secuencia de comandos sin la ruta especificada, por lo que es posible que desee colocar una declaraci\u00f3n IF al comienzo de su secuencia de comandos para asegurarse de que se ingresen ambos par\u00e1metros.<\/p>\n<pre><code>@echo offIF [%1]==[] (GOTO sub_message) ELSE (xcopy %1 E:backupfolder)GOTO eof:sub_messageecho You forgot to specify your path.:eof<\/code><\/pre>\n<p>Si nunca antes ha usado par\u00e1metros con secuencias de comandos por lotes, el s\u00edmbolo de porcentaje seguido de un n\u00famero representa la variable del par\u00e1metro. <strong>%1<\/strong> es el primer par\u00e1metro, %2 es el segundo y as\u00ed sucesivamente.<\/p>\n<p>En general, las declaraciones IF son demasiado \u00fatiles y no necesita escribir demasiados c\u00f3digos para usarlas. Por supuesto, si desea avanzar un poco m\u00e1s, podr\u00eda considerar echar un vistazo a VBA con nuestra gu\u00eda sobre c\u00f3mo <a href=\"https:\/\/www.makeuseof.com\/tag\/simple-app-vba\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">crear su primera aplicaci\u00f3n VBA<\/a>.<\/p>\n<h2>Los trabajos por lotes pueden ser poderosos<\/h2>\n<p>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\u00e1s l\u00f3gica a sus scripts.<\/p>\n<p>Adem\u00e1s, a menudo puede usar lenguajes de programaci\u00f3n m\u00e1s avanzados y usar PowerShell para realizar muchas de las mismas tareas para las que actualmente usa trabajos por lotes.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/www.makeuseof.com\" class=\"external external_icon\">www.makeuseof.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hay varios tipos de declaraciones IF que puede usar en un archivo por lotes de Windows para ahorrar tiempo y esfuerzo. Consulte estos ejemplos para obtener m\u00e1s informaci\u00f3n.<\/p>\n","protected":false},"author":1,"featured_media":189894,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[2933],"tags":[3062],"class_list":["post-277791","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/277791","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=277791"}],"version-history":[{"count":1,"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/277791\/revisions"}],"predecessor-version":[{"id":305652,"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/277791\/revisions\/305652"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/189894"}],"wp:attachment":[{"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=277791"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=277791"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/howto.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=277791"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}