Propaganda
Se você trabalha muito em arquivos em lote do Windows, o 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 você pode usar em um arquivo em lotes do Windows, como fica a sintaxe correta e um exemplo realista para cada um.
Se você está 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 é compare dois valores e siga 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 receber um relatório de e-mail com a indicação "Espaço no disco rígido muito baixo".
Para criar um script que compare o espaço livre atual no disco rígido com o seu limite, crie o seguinte script em lote e salve-o como um arquivo .bat.
@echo off. defina DriveLimit = 300000000. para / f "usebackq delims == tokens = 2" %% x in (`disco lógico wmic em que" DeviceID = 'C:' "obtenha FreeSpace / formato: valor`) defina FreeSpace = %% x. Eco FreeSpace = "% FreeSpace%" Limite de eco = "% DriveLimit%" Se% FreeSpace% GTR% DriveLimit% (eco) há espaço livre suficiente. ) else (eco Não há espaço livre suficiente. )
O WMIC é o componente Windows Management Instrumentation do Windows que vem com uma variedade de comandos que você pode usar para extrair informações do PC. É assim que o comando "wmic" neste script chama o espaço "disco lógico" e o coloca na variável FreeSpace. Agora você pode simplesmente substituir a linha "Eco sem espaço livre suficiente" por um comando de email em branco para enviar um alerta.
Por fim, configure esse script como um trabalho em lotes agendado para Windows que é executado diariamente.
Se você nunca usou blat antes, temos um artigo que mostra como configurar blat. Não está familiarizado com a configuração de trabalhos agendados? Cobrimos você com um artigo sobre como configurar tarefas agendadas do Windows 4 tarefas chatas que você pode automatizar com o Agendador de tarefas do WindowsSeu tempo é valioso demais para ser desperdiçado com tarefas repetitivas. Vamos mostrar como automatizar e agendar tarefas. Também temos alguns ótimos exemplos. consulte Mais informação .
2. Comparações de strings
Outra comparação IF valiosa que você pode fazer em um trabalho em lotes é comparando strings.
No exemplo a seguir, você verá como verificar sua versão do Windows usando um trabalho em lotes. Em seguida, você pode comparar isso com a versão esperada do Windows.
Alguns usos desse script seriam para auditorias de TI quando você precisar executar rapidamente um script e verificar se o sistema operacional atual é o mais recente ou se precisa de uma atualização.
Aqui está a aparência desse script.
@echo off. para / f "tokens = 4-5 delims =. "%% i in ('ver') define VERSION = %% i. %% j. se "% version%" == "6.0" ecoar no Windows Vista. se "% version%" == "6.1" ecoar no Windows 7. se "% version%" == "6.2" ecoar no Windows 8. se "% version%" == "6.3" ecoar no Windows 8.1. se "% version%" == "10.0" ecoar no Windows 10.
Veja como é a saída desse script.

A capacidade de comparar seqüências de caracteres em lote abre uma lista completa de possibilidades. Se você explorar todos os informações que você pode obter de um comando WMIC você verá quantas estatísticas sobre seu computador você pode monitorar. Você pode usar tarefas em lote agendadas para alertá-las.
3. Verifique se existe um arquivo
Outra situação útil em que uma instrução IF em um arquivo em lotes é verifique a existência de um arquivo de dados.
Muitas vezes o trabalho em lotes é apenas uma ferramenta de monitoramento que pode ser agendada para verificar novos arquivos de dados recebidos em um diretório específico.
Em seguida, o trabalho em lotes pode copiar esse arquivo para outro local onde pode ser processado ou lançar algum script do Windows que processa o arquivo em uma saída do Excel.
(Escrevemos no passado sobre como use scripts do Windows para processar dados em um arquivo do Excel 5 scripts úteis do Windows VB para automatizar o uso do computadorDo monitoramento de sites aos relatórios do sistema, saiba como automatizar tudo isso com esses incríveis scripts VB que você pode codificar no Windows agora. consulte Mais informação ; boa leitura de fundo.)
O uso de um arquivo em lotes para verificar se um arquivo existe em um diretório é rápido e fácil. Aqui está a aparência desse script.
@echo off. se existir c: \ temp \ datafile.txt (% WINDIR% \ SysWOW64 \ cmd.exe cscript LoadToExcel.vbs. ) else (o arquivo rem não existe. )
A comparação SE EXISTE é útil para muitas coisas.
Por exemplo, se você tem um sistema ou aplicativo em execução que cria novos logs de erros em uma pasta específica quando há um problema, você pode executar um trabalho em lotes de vez em quando para monitorar se novos logs de erro são criados para enviar um alerta.
4. Verifique se um comando falhou
Um aspecto do script de arquivos em lote que poucos profissionais de TI ou programadores usam é verificação de erros.
Existem muitos trabalhos em lote 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 arquivo. Quando esses trabalhos em lote falham, os sistemas falham e as pessoas percebem.
É muito mais inteligente receber um alerta quando seu trabalho em lote falha em um comando antes as pessoas começam a perceber. Dessa forma, você pode corrigir o problema proativamente.
Você pode fazer isso utilizando a variável% errorlevel% que a maioria dos aplicativos e comandos retornam após a execução.
Tudo o que você precisa fazer é seguir seu comando pelo comando IF% ERRORLEVEL%. Se o aplicativo ou comando retornou um zero, tudo está bem. Caso contrário, você precisará enviar um email para si mesmo.
@echo off. xcopy C: \ somefolder E: \ backupfolder. SE% ERRORLEVEL% NEQ 0
Você não precisa seguir a rota do e-mail. Você sempre pode escrever um log de erro que possa verificar todas as manhãs ou iniciar um segundo aplicativo ou comando que tente fazer a cópia usando um comando alternativo. Qualquer que seja a ação que você deseja executar, se% ERRORLEVEL% permitir.
Se você preferir usar uma instrução IF para verificar códigos de erro específicos, o Windows oferece uma extensa lista de códigos de erro.
5. Verifique se há parâmetros ausentes
A última instrução IF útil não é um comando específico, mas para verificar se o script recebeu os parâmetros de entrada apropriados.
Por exemplo, digamos que você tenha escrito 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.
Obviamente, você não pode executar corretamente seu script sem o caminho especificado, portanto, você pode colocar uma instrução SE no início do seu script para garantir que os dois parâmetros foram inseridos.
Aqui está como isso parece.
@echo off. SE [% 1] == [] ( Sub_mensagem GOTO. ) OUTRO ( xcopy% 1 E: \ pasta de backup. ) GOTO eof.: sub_message. eco Você esqueceu de especificar seu caminho.: 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 de parâmetro. % 1 é o primeiro parâmetro,% 2 é o segundo e assim por diante.
Trabalhos em lote podem ser poderosos
Muitas pessoas começam a usar tarefas em lote para tarefas simples que precisam ser executadas em sequência. Com as instruções IF, é possível adicionar muito mais inteligência aos seus scripts.
Obviamente, se você realmente quer aumentar o nível, considere dar uma olhada no VBA com o nosso guia sobre criando seu primeiro aplicativo VBAou talvez até aprender programação Python.
Muitas vezes você pode usar linguagens de programação mais avançadas como essas ou Aprenda a usar o PowerShell 5 razões para usar o PowerShell em vez de scripts em loteO PowerShell é o que você obteria se cruzasse o prompt de comando com scripts em lote, apresentasse alguns recursos extras e aumentasse vários pontos. Aqui estão várias razões pelas quais você deve experimentá-lo. consulte Mais informação , para realizar muitas das mesmas tarefas para as quais você atualmente usa tarefas em lote.
Ryan é bacharel em Engenharia Elétrica. Ele trabalhou 13 anos em engenharia de automação, 5 anos em TI e agora é engenheiro de aplicativos. Um ex-editor-chefe do MakeUseOf, ele falou em conferências nacionais sobre visualização de dados e foi apresentado na TV e rádio nacional.