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.

Ir para o topo