Você está na página 1de 6

Fazendo mgica com batch files (Tutoriais)

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

Fazendo mgica 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 "no"! Pesquisando no Google, nossa equipe tcnica percebeu que muitas dificuldades enfrentadas por usurios 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 no existe mais desde o lanamento 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 funes, comandos e aplicativos do antigo sistema. Para acess-lo, basta procurar pelo cone "Prompt de Comando" no menu Iniciar / Acessrios. A seguir, mostraremos a voc como usar alguns recursos interessantes do MS-DOS encapsulados em arquivos de Lote (batch files).

Entenda o que so Batch Files Batch files (arquivo de lotes), so arquivos no formato texto que contm comandos do MS-DOS. Os comandos so executados em sequncia, um por um, at o fim do arquivo. Batch Files fornecem uma maneira fcil de automatizar tarefas e, at mesmo, de auxiliar na execuo de sequencias tediosas de trabalho. Apesar de ser basicamente um arquivo texto, um batch file s se torna executvel pelo sistema quando sua extenso nomeada para .BAT (tradicional) ou para .CMD (extenso 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. No recomendamos usar aplicativos do tipo Office. Primeiro porque so 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 minsculas ou maisculas. O interpretador no faz distino capitular. Por fim, tenha o hbito de guardar seus scripts em um nico local. No nosso caso, criamos uma pasta chamada "batch" no diretrio raiz da unidade C ("c:\batch"). Iremos assumir, para todos os scripts, que voc fez exatamente a mesma coisa. Em seguida, adicione esse diretrio 1 varivel de ambiente "Path" (caminho) em "Painel de Controle / Sistema". Em "Propriedades do Sistema", clique na aba "Avanado" e, em seguida, clique no boto "Variveis de Ambiente".

1 de 6

07/07/12 20:09

Fazendo mgica 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-vrgula ao final da string (sequncia de texto que define esta varivel) e escreva o caminho completo do diretrio que conter seus arquivos .BAT. Se voc est seguindo nosso exemplo, basta adicionar ao final da string a sequncia ";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 execuo ou informar caminhos extensos no "Prompt de comando". A partir de agora, o sistema operacional ir incluir o diretrio dos seus scripts na lista de locais que devem ser pesquisados para se executar algum programa ou utilitrio. Ou seja, agora possvel chamar o seu batch file diretamente de "Iniciar / Executar" apenas escrevendo o nome do arquivo. No mais necessrio escrever o caminho inteiro. O sistema j sabe onde procurar por ele. O diretrio "c:\batch" tornou-se uma espcie de tool Box (caixa de ferramentas) que guarda todos os seus scripts.

Exemplo 1. Criando um Batch File para listar o contedo 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 usurio seleciona o diretrio que pretende listar e, em seguida, clica com o boto direito do mouse sobre a seleo 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 boto direito do mouse dentro desta pasta e selecione "Novo / Atalho".

2 de 6

07/07/12 20:09

Fazendo mgica 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 mgica com batch files (Tutoriais)

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

Cdigo Comentado @echo off Esta linha desativa o eco de comando. Por padro, o MS-DOS repete na tela um eco do comando dado. No nosso caso, no queremos que o eco seja exibido por uma questo de "esttica". Isso vlido 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 instruo @ na frente do comando "echo" instrui o interpretador de comandos a tambm no exibir o eco de "echo". Ao encerrar o batch file, echo volta ao padro definido pelas variveis de ambiente. dir /b %1 /o:g >c:\batch\listadir.txt DIR o comando que lista diretrios e arquivos no "Prompt de Comando". O argumento /b indica que a listagem deve ser simples (sem informaes de tamanho de arquivo, data, etc). J o argumento %1 uma varivel responsvel por "receber" o nome do diretrio selecionado para listagem. O filtro /o:g uma opo do comando dir que coloca os nomes de diretrio no topo da listagem. Por fim, o caractere > um pipe (direcionamento) para onde a sada do comando deve ser enviada. No nosso caso, para o arquivo "listadir.txt" dentro do diretrio "c:\batch". Caso omitido, usada a sada padro, que na tela. Para mais informaes e opes 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 compactao atravs de programas populares como, por exemplo, o WinZip, o WinRAR e o 7-Zip , o que ocorre que toda a seleo passa a ser guardada em um nico arquivo compactado. Mas e se, por alguma razo, voc desejar criar um arquivo compactado para cada arquivo de um determinado diretrio? Os programas no possuem opes 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 diretrio padro de instalao 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"

Cdigo Comentado @echo off Ver explicao no exemplo anterior. SET PATH=%PATH%;C:\Program Files\7-Zip Adiciona, varivel de ambiente "Path", o caminho para o executvel do 7-Zip. Isso se faz necessrio 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 mgica com batch files (Tutoriais)

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

"%%f" para cada arquivo pdf encontrado no diretrio onde o batch for executado. O parmetro %%f a varivel que armazena o nome do arquivo a cada execuo 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 parmetro %%f ser substitudo por "abc.pdf". Na segunda, por "def.pdf" e assim por diante. Os arquivos resultantes da operao se chamaro "abc.pdf.zip", "def.pdf.zip", etc... No se assuste com a quantidade de parmetros do compactador 7zip. Eles apenas definem as configuraes de compresso e formato de arquivo. Se voc no 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 atravs do Windows Explorer? Se j, voc deve ter percebido que o procedimento no muito, digamos, "flexvel". Todos os arquivos da seleo passam a ter o mesmo nome seguido de uma numerao entre colchetes. Talvez esse no seja realmente o resultado que voc esperava obter. Dependendo da quantidade de arquivos, renomear um por um manualmente como trabalhar em mina de carvo... Totalmente invivel. Porm, 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 (sequncias 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. Sugesto 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 mgica 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...

Cdigo Comentado Este batch file contm muitos dos recursos mais avanados 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 comentrio. Portanto, ignorada pelo interpretador de comandos. Os comentrios servem para ajudar a identificar informaes importantes dentro de um programa. Por exemplo, na linha onde est o exemplo de uso, fica fcil identificar o que o batch realmente faz. Ele recebe dois parmetros. O primeiro deles, a seleo 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 coleo de arquivos MP3 do Black Sabbath. Cada arquivo est nomeado com o nome da banda seguido do nome da msica. Digamos, agora, que voc queira deixar apenas o nome da msica. Basta executar o Batch com o parmetro a ser removido que ele far o servio para voc. Se voc acompanhou os exemplos anteriores com ateno, voc perceber que no difcil entender o que est acontecendo aqui. De qualquer forma, iremos explicar o que h de novo neste batch. a) Os parmetros 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 funo chamada ":funcREMOVEFN". O "Call" repassa os argumentos obtidos atravs da linha de comando para esta funo. c) As palavras-chave SETLOCAL e ENDLOCAL indicam que as variveis criadas s so vlidas neste bloco de cdigo. boa prtica de programao blocar instrues quando se deseja trabalhar com funes. Evita que parmetros errados sejam passados. d) Dentro da funo as variveis devem ser passadas no com %1 ou %2 (como na parte anterior do cdigo). Para que uma funo receba algo, necessrio incluir o cararctere til ("~"). e) A instruo CALL SET NEWFILENAME=%%FILENAME:%STRING%=%% cria uma nova varivel que armazena o novo nome de arquivo j sem a string indesejada. Repare que aps o sinal de igual no h nada, apenas dois sinais de percentual que servem para blocar a instruo. Se voc quiser modificar esse batch para aceitar um terceiro parmetro (por exemplo, para substituir a string indesejada por uma outra qualquer), basta passar o parmetro aps o sinal de igual ("=").

6 de 6

07/07/12 20:09