5 instruções IF a serem usadas para scripts em lote do Windows mais inteligentes
Se você trabalha muito em arquivos em lote do Windows, a instrução IF oferece uma maneira muito poderosa de adicionar flexibilidade aos seus scripts.
Neste artigo, você aprenderá sobre os cinco principais tipos de instruções IF que podem ser usados em um arquivo de lote do Windows, como a sintaxe correta se parece e um exemplo realista para cada um.
Se você estiver pronto para começar a criar scripts, vamos começar.
1 Comparar valores
Uma das coisas básicas que você geralmente precisa fazer em um script em lote é comparar dois valores e seguir um curso de ação diferente dependendo da comparação.
Por exemplo, digamos que você queira escrever um script em lote que verifique diariamente o tamanho do disco rígido do seu computador. Se estiver abaixo de 3 GB, você deseja obter um relatório por e-mail que diz "Espaço no disco rígido muito baixo".
Para criar um script que compare o espaço livre no disco rígido atual ao seu limite, você terá que criar o seguinte script em lote e salvá-lo como um arquivo .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.)
No script, WMIC é o componente WMI (Instrumentação de Gerenciamento do Windows) do Windows que vem com uma variedade de comandos que você pode usar para extrair informações do seu PC.
É assim que o comando "wmic" neste script chama o espaço do disco lógico e o coloca na variável FreeSpace .
Agora você pode substituir a linha Echo Não há espaço livre suficiente por um comando para enviar um alerta por e-mail. Defina o script para ser executado diariamente.
2 Comparações de String
Outra comparação IF valiosa que você pode fazer em um trabalho em lote é comparar strings.
No exemplo a seguir, você verá como verificar sua versão do Windows usando um trabalho em lote. Em seguida, você pode comparar isso com a versão esperada do Windows.
Alguns usos desse script seriam para auditorias de TI quando você precisa executar rapidamente um script e verificar se o sistema operacional atual é o mais recente ou se precisa de uma atualização.
Veja como esse script se parece:
@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.
Veja como é a saída deste script:
A capacidade de comparar strings em um lote abre toda uma lista de possibilidades. Se você explorar todas as informações que pode obter de um comando WMIC, verá quantas estatísticas sobre seu computador podem ser monitoradas.
Além disso, você pode até usar trabalhos em lote programados para receber alertas sobre eles.
3 Verifique se existe um arquivo
Outra situação útil em que uma instrução IF em um arquivo em lotes é verificar a existência de um arquivo de dados.
Muitas vezes, o trabalho em lote é apenas uma ferramenta de monitoramento que você pode agendar para verificar se há novos arquivos de dados recebidos em um diretório específico. Em seguida, você pode copiar esse arquivo para outro local ou iniciar algum script do Windows que processa o arquivo em uma saída do Excel.
Usar um arquivo em lote para verificar se existe um arquivo em um diretório é rápido e fácil. Veja como é esse script:
@echo offif exist c:tempdatafile.txt (%WINDIR%SysWOW64cmd.exe cscript LoadToExcel.vbs) else (rem file doesn't exist)
A comparação IF EXISTS é útil para muitas coisas.
Por exemplo, se você tiver um sistema ou aplicativo em execução que crie novos logs de erros em uma pasta específica quando houver um problema, poderá executar um trabalho em lote de vez em quando. Dessa forma, você pode monitorar facilmente se novos logs de erros são criados para que você possa enviar um alerta.
4 Verifique se um comando falhou
Um aspecto do script de arquivos em lote que muito poucas pessoas de TI ou programadores usam é a verificação de erros.
Há muitos trabalhos em lote circulando por aí que estão executando tarefas críticas de TI, como fazer backup de arquivos importantes ou executar operações de cópia de arquivos. Quando esses trabalhos em lote falham, os sistemas falham e as pessoas geralmente percebem.
É muito mais inteligente receber um alerta quando seu trabalho em lote falhou em um comando antes que as pessoas comecem a perceber. Dessa forma, você pode corrigir o problema de forma proativa.
Você pode fazer isso utilizando a variável %errorlevel% que a maioria dos aplicativos e comandos retornam após serem executados. Tudo o que você precisa fazer é seguir seu comando com o comando IF %ERRORLEVEL%.
@echo offxcopy C:omefolder E:backupfolderIF %ERRORLEVEL% NEQ 0 <blat command to send email>
Se o aplicativo ou comando retornar um zero, está tudo bem. Se não, então você precisa enviar um e-mail.
No entanto, você não precisa seguir o caminho do e-mail. Você sempre pode escrever um log de erros que pode ser verificado todas as manhãs ou iniciar um segundo aplicativo ou comando que tente fazer a cópia usando um comando alternativo.
Além disso, se você preferir usar uma instrução IF para verificar códigos de erro específicos, o Windows oferece uma lista bastante extensa de códigos de erro do sistema.
5 Verifique se há parâmetros ausentes
A última instrução IF útil não é para um comando específico, mas para verificar se o script recebeu os parâmetros de entrada apropriados.
Por exemplo, digamos que você escreveu um script que executa um comando xcopy de uma pasta de entrada para uma pasta de rede comum usada por uma equipe. O usuário só precisa seguir o nome do seu script com os parâmetros que definem o caminho do arquivo pessoal.
Você não pode executar corretamente seu script sem o caminho especificado, então você pode querer colocar uma instrução IF no início do seu script para garantir que ambos os parâmetros sejam inseridos.
@echo offIF [%1]==[] (GOTO sub_message) ELSE (xcopy %1 E:backupfolder)GOTO eof:sub_messageecho You forgot to specify your path.:eof
Se você nunca usou parâmetros com scripts em lote antes, o símbolo de porcentagem seguido por um número representa a variável do parâmetro. %1 é o primeiro parâmetro, %2 é o segundo e assim por diante.
Em geral, as instruções IF são muito úteis e você não precisa escrever muitos códigos para realmente usá-las. Claro, se você quiser dar um passo adiante, considere dar uma olhada no VBA com nosso guia sobre como criar seu primeiro aplicativo VBA.
Trabalhos em lote podem ser poderosos
Muitas pessoas começaram a usar trabalhos em lote para tarefas simples que precisam ser executadas sequencialmente. Felizmente, com instruções IF, é possível adicionar muito mais lógica aos seus scripts.
Além disso, muitas vezes você pode usar linguagens de programação mais avançadas e usar o PowerShell para realizar muitas das mesmas tarefas para as quais atualmente usa trabalhos em lote.
