Processamento de Arquivos em Lote no Windows

Uma das motivações para aprendermos os comandos no terminal do Windows é a automação de tarefas, isto é, fazer várias coisas repetitivas mais facilmente. Uma das tarefas de um desenvolvedor é criar um backup de arquivos. Vamos então criar um pequeno script para "backupear" arquivos. Tudo executado na linha de comando.

Os scripts no mundo Windows são nada mais do que arquivos de texto com a extensão .bat. Bat vem do inglês batch, em português, "lote". Ou seja, com esse script é possível executar vários comandos em lote.

Vamos criar um arquivo batch, na linha de comando:

echo cls > script.bat

Repare que o comando não foi executado ainda, gravamos apenas o comando cls no arquivo script.bat.

Criando um arquivo em lote no terminal do Windows

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? Basta digitar:

script.bat

O script foi chamado e todos os comandos dentro dele foram executados sequencialmente! Como resultado, a tela está limpa!

O arquivo tem a extensão .bat (batch, lote) não é por acaso, pois podemos executar mais do que um comando em sequência. 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, para 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:

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 deseje 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 preparar a pasta do backup através do script, indo para a pasta home do nosso usuário e criando o diretório de backup:

					echo cls >> script.bat
					echo echo ok, fazendo backup... >> script.bat
					echo cd C:\Users\airton.k >> 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.

Seguindo, agora podemos copiar os arquivos da pasta codigo para a pasta backup. O problema ainda é que o comando copy é muito simples e não consegue copiar pastas e subpastas. Ainda bem que existe o irmão dele, o 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, podemos escrever:

					xcopy /E /Y "C:\Users\airton.k\codigo"  "C:\Users\airton.k\backup"
				

Agora no fim do script podemos listar os arquivo da pasta backup:

					echo Listando os arquivos do backup
					dir C:\Users\airton.k\backup
				

Pronto! Agora nosso script realiza o backup da pasta código como desejávamos!

Arquivo batch aberto no bloco de notas.

Repare que, o script é nada mais do que um conjunto de comandos pequenos para realizar uma tarefa maior.

Terminal mais Limpo

Há um detalhe que ainda podemos melhorar! Repare 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...
					cd C:\Users\airton.k
					mkdir backup
					xcopy /E /Y "C:\Users\airton.k\codigo"  "C:\Users\airton.k\backup"
					echo Listando os arquivos do backup
					dir C:\Users\airton.k\backup
				
Executando arquivo em lote com echo off no terminal do Windows

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

Ir para o topo