You are on page 1of 6

Fazendo mágica com batch files (Tutoriais

)

http://www.superdownloads.com.br/materias/fazendo-magica-batch-file...

Fazendo mágica com batch files
Aprenda a automatizar tarefas usando scripts de MS-DOS no Windows
Por Ladislau Freitas em 03/Jul/2012
Compartilhe:

Coisas simples como, por exemplo, gerar uma lista dos arquivos de uma pasta pode se tornar um pesadelo para os mais novos, principalmente para quem aprendeu a usar o computador já na era do Windows. Exagero? Definitivamente "não"! Pesquisando no Google, nossa equipe técnica percebeu que muitas dificuldades enfrentadas por usuários menos experientes podem ser resolvidas facilmente com alguns comandos do velho e bom MS-DOS. Isso mesmo! Pode parecer loucura, mas scripts feitos no bom e velho modo texto podem ser ainda muito úteis nos dias de hoje.

O MS-DOS ainda existe?
O MS-DOS, como Sistema Operacional, já não existe mais desde o lançamento do Windows 95. O que existe é um "shell", um ambiente que pode ser chamado de dentro do Windows e que tem a capacidade de executar a maior parte das funções, comandos e aplicativos do antigo sistema. Para acessá-lo, basta procurar pelo ícone "Prompt de Comando" no menu Iniciar / Acessórios. A seguir, mostraremos a você como usar alguns recursos interessantes do MS-DOS encapsulados em arquivos de Lote (batch files).

Entenda o que são Batch Files Batch files (arquivo de lotes), são arquivos no formato texto que contém comandos do MS-DOS. Os comandos são executados em sequência, um por um, até o fim do arquivo. Batch Files fornecem uma maneira fácil de automatizar tarefas e, até mesmo, de auxiliar na execução de sequencias tediosas de trabalho. Apesar de ser basicamente um arquivo texto, um batch file só se torna executável pelo sistema quando sua extensão é nomeada para .BAT (tradicional) ou para .CMD (extensão suportada por sistemas operacionais baseados no Windows NT).

Você precisa apenas de um editor de textos simples para escrever os comandos. O "Bloco de notas do Windows" ("Notepad") é excelente. Não recomendamos usar aplicativos do tipo Office. Primeiro porque são pesados, segundo que porque corre-se o risco de você esquecer de mudar o tipo de arquivo para "Somente texto" quando for salvar seu "Batch file". Lembre-se que o interpretador de comandos só aceita arquivos texto puros (ASCII). Outro detalhe é que os comandos podem ser escritos com letras minúsculas ou maiúsculas. O interpretador não faz distinção capitular. Por fim, tenha o hábito de guardar seus scripts em um único local. No nosso caso, criamos uma pasta chamada "batch" no diretório raiz da unidade C ("c:\batch"). Iremos assumir, para todos os scripts, que você fez exatamente a mesma coisa. Em seguida, adicione esse diretório 1 à variável de ambiente "Path" (caminho) em "Painel de Controle / Sistema". Em "Propriedades do Sistema", clique na aba "Avançado" e, em seguida, clique no botão "Variáveis de Ambiente".

1 de 6

07/07/12 20:09

Fazendo mágica com batch files (Tutoriais)

http://www.superdownloads.com.br/materias/fazendo-magica-batch-file...

Em seguida procure, no painel inferior, pela entrada "Path". Adicione ponto-vírgula ao final da string (sequência de texto que define esta variável) e escreva o caminho completo do diretório que conterá seus arquivos .BAT. Se você está seguindo nosso exemplo, basta adicionar ao final da string a sequência ";c:\batch" (sem aspas).

Isso fará com que seus scripts possam ser executados de qualquer lugar, sem que haja a necessidade de copiar os arquivos .BAT para o local da execução ou informar caminhos extensos no "Prompt de comando". A partir de agora, o sistema operacional irá incluir o diretório dos seus scripts na lista de locais que devem ser pesquisados para se executar algum programa ou utilitário. Ou seja, agora é possível chamar o seu batch file diretamente de "Iniciar / Executar" apenas escrevendo o nome do arquivo. Não é mais necessário escrever o caminho inteiro. O sistema já sabe onde procurar por ele. O diretório "c:\batch" tornou-se uma espécie de tool Box (caixa de ferramentas) que guarda todos os seus scripts.

Exemplo 1. Criando um Batch File para listar o conteúdo de uma pasta.
Em nosso primeiro exemplo, iremos criar um batch file que cria um arquivo de texto contendo a listagem de arquivos selecionados dentro do Windows Explorer. Funcionará da seguinte maneira: o usuário seleciona o diretório que pretende listar e, em seguida, clica com o botão direito do mouse sobre a seleção e escolhe "Enviar Para / Listadir.bat". O resultado ficará armazenado em "c:\batch \listadir.txt" Abra o bloco de notas e escreva os seguintes comandos: @echo off dir /b %1 /o:g >c:\batch\listadir.txt Em seguida, salve o arquivo como "listadir.bat". Agora, você precisa criar um atalho para seu batch file dentro da pasta "SendTo" ("Enviar Para") do seu Windows. Nos Windows 2000 e XP a pasta encontra-se em: C:\Documents and Settings\**seu-usuario**\SendTo\ No Windows Vista e no Windows 7: C:\Users\***seu-usuario***\AppData\Roaming\Microsoft\Windows\SendTo Clique com o botão direito do mouse dentro desta pasta e selecione "Novo / Atalho".

2 de 6

07/07/12 20:09

Fazendo mágica com batch files (Tutoriais)

http://www.superdownloads.com.br/materias/fazendo-magica-batch-file...

Digite o comando (nome do batch file) e, em seguida, um nome para o atalho (como ele irá aparecer no menu de contexto).

Agora, ao clicar em uma pasta, você poderá enviá-la como argumento para seu script a partir do Windows Excplorer.

3 de 6

07/07/12 20:09

Fazendo mágica com batch files (Tutoriais)

http://www.superdownloads.com.br/materias/fazendo-magica-batch-file...

Código Comentado @echo off Esta linha desativa o eco de comando. Por padrão, o MS-DOS repete na tela um eco do comando dado. No nosso caso, não queremos que o eco seja exibido por uma questão de "estética". Isso é válido quando "listadir.bat" for executado diretamente a partir do prompt de comando. Quando executado de dentro do Windows, a única coisa que se vê é a tela do "Prompt de Comando" piscando. A instrução @ na frente do comando "echo" instrui o interpretador de comandos a também não exibir o eco de "echo". Ao encerrar o batch file, echo volta ao padrão definido pelas variáveis de ambiente. dir /b %1 /o:g >c:\batch\listadir.txt DIR é o comando que lista diretórios e arquivos no "Prompt de Comando". O argumento /b indica que a listagem deve ser simples (sem informações de tamanho de arquivo, data, etc). Já o argumento %1 é uma variável responsável por "receber" o nome do diretório selecionado para listagem. O filtro /o:g é uma opção do comando dir que coloca os nomes de diretório no topo da listagem. Por fim, o caractere > é um pipe (direcionamento) para onde a saída do comando deve ser enviada. No nosso caso, para o arquivo "listadir.txt" dentro do diretório "c:\batch". Caso omitido, é usada a saída padrão, que é na tela. Para mais informações e opções para o comando dir basta digitar, no "Prompt de Comando", dir /? <enter> Ou simplesmente help dir <enter>.

Exemplo 2. Compactando diversos arquivos separadamente
Quando selecionamos diversos arquivos no Windows Explorer e solicitamos a compactação através de programas populares como, por exemplo, o WinZip, o WinRAR e o 7-Zip , o que ocorre é que toda a seleção passa a ser guardada em um único arquivo compactado. Mas e se, por alguma razão, você desejar criar um arquivo compactado para cada arquivo de um determinado diretório? Os programas não possuem opções que realizam tal tarefa. Mas com a "ajudinha" de um batch file bem escrito, podemos resolver esse problema. Nome do Arquivo: compacta.bat Obs: Requer compactador de arquivos com suporte à linha de comando. No exemplo, usamos o programas 7zip e WinRAR. Assume-se o diretório padrão de instalação para os compactadores. @echo off SET PATH=%PATH%;C:\Program Files\7-Zip for %%f in (*.pdf) do 7z a -tzip -mx=9 "%%f".zip "%%f"

Código Comentado @echo off Ver explicação no exemplo anterior. SET PATH=%PATH%;C:\Program Files\7-Zip Adiciona, à variável de ambiente "Path", o caminho para o executável do 7-Zip. Isso se faz necessário para que, quando o programa seja chamado, o sistema saiba onde procurá-lo. for %%f in (*.pdf) do 7z a -tzip -mx=9 "%%f".zip "%%f" O Comando For instrui o shell a executar o comando 7z a -tzip -mx=9 "%%f".zip

4 de 6

07/07/12 20:09

Fazendo mágica com batch files (Tutoriais)

http://www.superdownloads.com.br/materias/fazendo-magica-batch-file...

"%%f" para cada arquivo pdf encontrado no diretório onde o batch for executado. O parâmetro %%f é a variável que armazena o nome do arquivo a cada execução do comando for. Desta forma, digamos que o primeiro arquivo encontrado chame-se "abc.pdf" e o segundo arquivo seja o "def.pdf". Na primeira passagem, o parâmetro %%f será substituído por "abc.pdf". Na segunda, por "def.pdf" e assim por diante. Os arquivos resultantes da operação se chamarão "abc.pdf.zip", "def.pdf.zip", etc... Não se assuste com a quantidade de parâmetros do compactador 7zip. Eles apenas definem as configurações de compressão e formato de arquivo. Se você não quiser usar o 7zip para realizar a tarefa, você pode usar o WinRAR ou qualquer outro compactador que suporte linha de comandos. No caso do WinRAR seu batch ficaria assim: @echo off SET PATH=%PATH%;C:\Program Files\WinRAR For %%f in (*.pdf) do RAR a "%%f".rar "%%f"

3. Renomeando diversos arquivos (Extraindo String de arquivos)
Você já tentou renomear diversos arquivos simultaneamente através do Windows Explorer? Se já, você deve ter percebido que o procedimento não é muito, digamos, "flexível". Todos os arquivos da seleção passam a ter o mesmo nome seguido de uma numeração entre colchetes. Talvez esse não seja realmente o resultado que você esperava obter. Dependendo da quantidade de arquivos, renomear um por um manualmente é como trabalhar em mina de carvão... Totalmente inviável. Porém, com um script bem escrito, você pode resolver esse tipo de problema com relativa facilidade. O exemplo que vem a seguir foi escrito com o intuito de ajudar você a remover strings (sequências de texto) dos nomes de arquivo. Mas pode ser facilmente modificado para atender a outros tipos de necessidade, como, por exemplo, substituir uma string existente no nome de arquivo para uma outra pré-estabelecida. Sugestão de nome para o batch: "xrename.bat" (algo como rename extendido). :: :: XRENAME.BAT :: =========== :: :: Criado em: 02-06-2012 :: :: Ambientes de teste: :: - Windows Vista SP2 :: :: Uso: :: XRENAME nome_do_arquivo string :: Extrai "string" de "nome_do_arquivo". :: Ex.: xrename *.mp3 "Black Sabbath " @ECHO OFF SETLOCAL SET RMVFILES=%1 SET RMVSTR=%2 FOR %%F IN (%RMVFILES%) DO CALL:funcREMOVEFN "%%F",%RMVSTR% ENDLOCAL GOTO :EOF

:funcREMOVEFN SETLOCAL

5 de 6

07/07/12 20:09

Fazendo mágica com batch files (Tutoriais)
SETLOCAL SET FILENAME=%~1 SET STRING=%~2 CALL SET NEWFILENAME=%%FILENAME:%STRING%=%% RENAME "%FILENAME%" "%NEWFILENAME%" ENDLOCAL

http://www.superdownloads.com.br/materias/fazendo-magica-batch-file...

Código Comentado Este batch file contém muitos dos recursos mais avançados dos batch files. Você deve ter percebido os dois-pontos ("::") iniciando as primeiras linhas. Cada linha iniciada desta forma significa que ela é, na verdade, um comentário. Portanto, é ignorada pelo interpretador de comandos. Os comentários servem para ajudar a identificar informações importantes dentro de um programa. Por exemplo, na linha onde está o exemplo de uso, fica fácil identificar o que o batch realmente faz. Ele recebe dois parâmetros. O primeiro deles, é a seleção de arquivos. No caso, arquivos MP3. O segundo argumento indica que deseja-se remover a string "Black Sabbath? dos nomes de arquivo. Por exemplo. Suponhamos que você tenha uma coleção de arquivos MP3 do Black Sabbath. Cada arquivo está nomeado com o nome da banda seguido do nome da música. Digamos, agora, que você queira deixar apenas o nome da música. Basta executar o Batch com o parâmetro a ser removido que ele fará o serviço para você. Se você acompanhou os exemplos anteriores com atenção, você perceberá que não é difícil entender o que está acontecendo aqui. De qualquer forma, iremos explicar o que há de novo neste batch. a) Os parâmetros numerados "%1" e "%2" recebem, respectivamente, os argumentos relativos a quais arquivos devem ser alterados e qual a string a ser removida. b) Dentro do for, há uma chamada para uma função chamada ":funcREMOVEFN". O "Call" repassa os argumentos obtidos através da linha de comando para esta função. c) As palavras-chave SETLOCAL e ENDLOCAL indicam que as variáveis criadas só são válidas neste bloco de código. É boa prática de programação blocar instruções quando se deseja trabalhar com funções. Evita que parâmetros errados sejam passados. d) Dentro da função as variáveis devem ser passadas não com %1 ou %2 (como na parte anterior do código). Para que uma função receba algo, é necessário incluir o cararctere til ("~"). e) A instrução CALL SET NEWFILENAME=%%FILENAME:%STRING%=%% cria uma nova variável que armazena o novo nome de arquivo já sem a string indesejada. Repare que após o sinal de igual não há nada, apenas dois sinais de percentual que servem para blocar a instrução. Se você quiser modificar esse batch para aceitar um terceiro parâmetro (por exemplo, para substituir a string indesejada por uma outra qualquer), basta passar o parâmetro após o sinal de igual ("=").

6 de 6

07/07/12 20:09