O que é, como criar e executar um script em lote no Windows?

Scripts em lote no mundo Windows são nada mais do que arquivos de texto com a extensão .bat. Essa extensão vem do termo inglês batch, e significa "lote" em português. Ou seja, com esse tipo de script é possível executar vários comandos, um após o outro.

Ele pode ser útil na hora de automatizar tarefas repetitivas e trabalhosas.

Por exemplo, um backup. Podemos fazê-lo manualmente toda vez, ou dar um duplo clique em um arquivo de lote que fará a tarefa para nós. Falando nisso, vamos construir um pequeno script de backup neste artigo.

Criando um Script em Lote

Conforme já visto no artigo passado, quando abrimos o terminal, estamos na pasta do usuário da máquina.

Nessa mesma pasta, vamos criar um arquivo chamado script.bat e gravar dentro dele a instrução cls, que limpa o terminal quando é executada.

echo cls > script.bat

Repare que o comando não foi executado ainda, gravamos apenas o comando cls no arquivo script.bat. Listando o conteúdo da pasta com o dir, visualizamos o arquivo.

Listando conteúdo de pasta via cmd.

Abrindo o arquivo no Bloco de Notas do Windows, entendemos melhor o que aconteceu.

Arquivo em lote aberto no bloco de notas do Windows

E como posso executar o script?

Estando na mesma pasta onde o script foi salvo, basta digitar:

script.bat

O script foi chamado e todas as instruções dentro dele foram executados sequencialmente! Como só havia um comando para limpar a tela, foi o que aconteceu.

Vamos abrir o arquivo script.bat novamente no bloco de notas e depois do cls adicionar um echo perguntando se o usuário realmente deseja continuar e, a fim de parar a execução, podemos adicionar o comando pause:

Editando arquivo em lote pelo bloco de notas do Windows

O comando pause faz com que o usuário precise confirmar a continuação da execução do script. Vamos testar uma vez para deixar mais claro, chamando mais uma vez a execução do arquivo.

script.bat
Executando arquivo em lote no terminal do Windows

Isso nos permite dar a opção ao usuário de abortar a execução do script caso ele não deseja continuar, através do atalho CTRL + C ou, simplesmente, fechando o terminal.

Podemos também editar o nosso script.bat sem abrir um editor de texto. Basta indicar com o >> que queremos salvar a saída do terminal em nosso script.bat

Para exemplificar, podemos continuar na construção do nosso script adicionando um cls para limpar a tela, uma mensagem para o usuário saber que vamos iniciar o backup e criar a pasta de backup através do script. Basta colar as linhas abaixo no terminal.

echo cls >> script.bat
echo echo ok, fazendo backup... >> script.bat
echo mkdir Backup >> script.bat

Como resultado, abrindo nosso bloco de notas, vemos . . .

Arquivo em lote (.bat) aberto no bloco de notas.

Ou seja, ele adicionou mais linhas de comando ao mesmo documento. Graças ao >>.

Usar o >> é bem útil quando queremos gerar arquivos de log, em que o próprio sistema precisa escrever as saídas em um documento ou repassá-las para outro programa. Por hora, no nosso exemplo, continuaremos com o editor de textos.

A titulo de exemplo, vamos fazer o backup da pasta Documents do usuário da máquina.

Podemos então copiar os arquivos da pasta Documents para a pasta Backup. O problema é que o comando copy é muito simples e não consegue copiar pastas e subpastas. Por isso, devemos recorrer ao xcopy.

O xcopy copia pastas e subpastas desde que usamos os parâmetros /E (para copiar subpastas) e /Y (para confirmar automaticamente a sobrescrita de arquivos). Sabendo disso, basta adicionar a instrução abaixo em nosso arquivo pelo bloco de notas.

xcopy /E /Y "C:\Users\airton\Documents"  "C:\Users\airton\Backup"

E no fim do script, podemos listar os arquivo da pasta Backup:

echo Listando os arquivos do backup
dir C:\Users\airton\Backup
Arquivo batch aberto no bloco de notas.

Agora nosso script realiza o backup da pasta Documents. Mas há um detalhe que ainda podemos melhorar. Veja que, ao executar nosso script, o terminal imprime o comando echo e sua respectiva saída.

Executando arquivo em lote no terminal do Windows

Podemos evitar isso com o comando @echo off no inicio do script:

@echo off
cls
echo Deseja realmente fazer o backup?
pause
cls
echo ok, fazendo backup...
mkdir Backup
xcopy /E /Y "C:\Users\airton\Documents"  "C:\Users\airton\Backup"
echo Listando os arquivos do backup
dir C:\Users\airton\Backup
Executando arquivo em lote com echo off no terminal do Windows

Dessa forma, o conteúdo apresentado no terminal fica mais enxuto.

Vimos então que scripts em lote são um conjunto de comandos pequenos para realizar uma tarefa maior.

Artigos Relacionados