Batch

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Question book.svg
Este artigo ou secção necessita de referências de fontes secundárias fiáveis publicadas por terceiros (desde novembro de 2015).
Por favor, melhore-o, incluindo referências mais apropriadas vindas de fontes fiáveis e independentes.
Fontes primárias, ou que possuem conflito de interesse geralmente não são suficientes para se escrever um artigo em uma enciclopédia.
Encontre fontes: Google (notícias, livros e acadêmico)

Batch é um arquivo em lotes da Microsoft, normalmente utilizado para otimizar tarefas por técnicos e programadores. Um arquivo em lote é basicamente um arquivo de script que é executado sequencialmente pelo Prompt de comando.

Sobre[editar | editar código-fonte]

Em Batch, a maioria dos comandos são arquivos externos. Isto é, arquivos executáveis que estão presentes na pasta System32 do computador. Exceto aqueles nativos do Prompt, por exemplo: if, else, exit, goto, call, start, for, set, echo...

Embora arquivos em Batch pareçam simples, pelo fato de se utilizar programas externos dá para estender as possibilidades de uso. Caso deseje obter ajuda sobre os comandos do Prompt, abra o mesmo e digite help. E caso deseje ajuda sobre um comando específico, pode tentar da seguinte forma: comando /?

Comandos básicos[editar | editar código-fonte]

  • if - Comando utilizado para comparação de valores.
  • else - Comando utilizado em conjunto com if, onde executa o mesmo caso a comparação do comando if não for verdadeira.
  • exit - Finaliza a execução atual chamado por call, ou sai do Prompt.
  • goto - Pula para um label definido pelo usuário, caso queira ir para o fim do arquivo Batch use: goto :eof
  • call - Usado para fazer uma chamada de execução, pode ser um arquivo em lote externo ou um label.
  • start - Inicia uma nova janela no Prompt para executar um programa ou comando específico.
  • for - Faz um loop de execução de acordo com os parâmetros passados.
  • set - Define uma variável de ambiente utilizada pela instância do Promt atual.
  • echo - Exibe uma mensagem no prompt, ou ativa/desativa o eco de comando.
  • color - Define as cores de primeiro e segundo plano no ambiente do Prompt.
  • cls - Limpa o console.

[1]

Uso básico[editar | editar código-fonte]

If e else[editar | editar código-fonte]

O comando if pode ser usado para comparar valores, textos, verificar se arquivos existem, verificar se uma variável foi definida, entre outros.

Sintáxe[editar | editar código-fonte]

  • if [not] (defined/cmdextversion/errorlevel/exist) valor comando [else] comando
  • if [not] valor1==valor2 comando [else] comando
  • if [/i] valor1 Comparação valor2 comando [else] comando

Valores entre [ e ] são opcionais.

Parâmetros[editar | editar código-fonte]

  • not - Inverte a comparação. Isto é, executa o comando se a comparação der falso.
  • errorlevel valor - Verifica o valor de errorlevel. Geralmente é diferente de 0 se der algum erro.
  • exist valor - Verifica se um arquivo ou pasta existem.
  • defined variável - Verifica se uma variável foi definida.
  • valor1 == valor2 - Verifica se os dois valores são iguais.
  • Comparação - Faz a comparação de dois valores. Onde pode ser usado:
    • EQU - Verifica se os valores são iguais.(EQUal)
    • NEQ - Verifica se os dois valores são diferentes.(Not EQual)
    • LSS - Verifica se o valor da esquerda é menor que o da direita.(LeSS)
    • LEQ - Verifica se o valor da esquerda é menor ou igual o da direita.(Less or EQual)
    • GTR - Verifica se o valor da esquerda é maior que o da direita.(GreaTeR)
    • GEQ - Verifica se o valor da esquerda é maior ou igual o da direita.(Greater or EQual)
  • /i - Faz a comparação de valores sem diferenciar minúscula ou maiúscula.(case-insensitive)
  • Comando - Comando ou série de comandos executados.

[2]

Exemplo de uso[editar | editar código-fonte]

O comando if pode ser usado em uma única linha ou mais. Para várias linhas utilize ( e ) para definir o inicio e fim dos comandos para serem executados. Enquanto ao comando else deve estar na mesma linha que o if, ou no caractere ) que define o fim do bloco de comandos executados pelo if.

@echo off
set /p name=Digite seu nome: 
if "%name%"=="Felipe" (
   echo Oi Felipe, esse tambem e meu nome. ^^^^
   echo.
) else (
   echo Ola %name%, bom dia.
   echo.
)

Variáveis[editar | editar código-fonte]

Em Batch para se utilizar o valor de uma variável, deve ser feito da seguinte forma: %variavel% Variáveis também podem ser manipuladas desta forma:

  • %variavel:seq1=seq2 - Modifica todas as ocorrências de seq1 para seq2.
  • %variavel:~2,5 - Pega uma subcadeia de 5 caracteres a partir do caractere 2.

Também pode se utilizar valores negativos, ou definir apenas um valor inicial. Exemplos: %var:~-2,2% : Pegaria os últimos dois caracteres. %var:~5%  : Pegaria todos os caracteres a partir do caractere 5.

As variáveis são expandidas para seu respectivos valores antes da execução do comando. Isto é, você pode usar variáveis não somente como valores mas também como comandos e etc.

@echo off
set command=echo.^&echo Isso funcionaria.
%command%
:: Imprimiria na tela uma quebra de linha seguida do texto.
%command:~0,5%
::Imprimiria na tela uma quebra de linha.

Macros[editar | editar código-fonte]

Macros também podem ser definidos no Batch. São palavras-chaves que executam os comandos de seu valor.

Usa-se o comando doskey para se definir um macro desta forma: doskey nomeDoMacro=echo Valor do Macro. Exemplo:

doskey echoSemQuebraDeLinha= ^<nul set /p=$*
echoSemQuebraDeLinha Este texto vai ser imprimido sem quebrar a linha.
echo Este vai aparecer na mesma linha do texto acima.

Macros funcionam de forma idêntica a comandos já existentes do Prompt. Você pode inclusive passar parâmetros, onde se utiliza no macro os valores $1-$9.(equivalentes a %1-%9 de um arquivo em lote) Também se pode usar o $* para inserir todos os parâmetros passados para o macro.(equivalente à %*) E utilize $T como um separador de comandos caso queira que seu macro execute mais de um comando.(equivalente ao & no arquivo em lote)

Caracteres especiais[editar | editar código-fonte]

Eis a lista de caracteres especiais do Batch e exemplos:

  • > - Redireciona o eco de comando para um arquivo de texto substituindo qualquer texto existente, ou para uma porta do computador. Exemplo:
echo Ola, como vai?>wikipedia.txt
:: Gravaria o texto "Ola, como vai?" no arquivo wikipedia.txt
echo Por favor impressora, imprima isso.>prn
:: Imprimiria o texto.
type wikipedia.txt>prn
:: Imprimiria o conteúdo do arquivo wikipedia.txt

Onde as portas aceitas são: Portas paralelas: LPT1, LPT2, LPT3 Portas seriais  : COM1, COM2, COM3 PRN - Porta da impressora. NUL - Porta nula, ou seja simplesmente não exibe o eco sem redirecionar para lugar algum.[3]

  • >> - Redireciona o echo de comando para um arquivo adicionando o texto em uma nova linha. Exemplo:
echo 1 - Ler um artigo na Wikipedia.>>wikipedia.txt
echo 2 - Fazer todo o resto.>>wikipedia.txt
  • < - Oposto de >. Redireciona o valor a partir de um arquivo ou porta, para uma variável.

Exemplo:

set /p valor=<arquivo.txt
  • ^ - Caractere usado para anular um caractere como especial, assim o tornando apenas texto.

Exemplo:

echo Isso vai para dentro ^< do arquivo>arq.txt
echo Esse e o circunflexo: ^^
echo Essa e uma carinha feliz: ^^_^^
:: ^_^
  • @ - Adicione esse caractere no inicio de um comando para não exibir o eco do comando.

Caso queira desativar/ativar o eco de comando de forma global. Utilize: @echo off/on

  • | - Também funciona como o redirecionador >. Mas ao invés de redirecionar para um arquivo/porta, ele redireciona a saída para outro comando do Prompt. Exemplo:
(
  echo Veja, isso e um bloco de "echos"
  echo Todo esse texto vai ser junto como um so
  echo Perfeito para criar arquivos com varias linhas, ou uma lista.
) | sort
:: Veja o resultado no Prompt.
:: O comando sort organiza o texto em ordem alfabética.

Alguns utilitários avançados[editar | editar código-fonte]

A centenas de comandos básicos e avançados em Batch, citar todos e como usa-los exigiria um texto muito extenso. Alguns deles mereceriam uma própria página Wiki, como por exemplo o certUtil.

  • certUtil - Utilitário com funções como: Banco de dados, arquivos, codificação e decodificação, cálculo de hash, despejo etc.

Digite no Prompt certUtil /? para mais informações.

  • ftp - Utilitário usado para enviar e baixar arquivos de um servidor FTP.
  • net - Utilitário usado para modificar configurações de conexão.
  • diskpart - Utilitário usado para modificações em partições do computador.
  • CScript/WScript - Utilitário usado para executar scripts .js ou .vbs, em modo console ou janela.(Em sua respectiva ordem)

Exemplos de códigos[editar | editar código-fonte]

Imprimir texto em cores[editar | editar código-fonte]

@echo off
color 0F
<nul set /p=Veja, cores no Prompt: 
call :color 0C "Achou que eu estava brincando."
echo.
call :color 4D "Beeeeem legal."

pause>nul
goto :eof
:color
echo ��  >"%~2F"
:: Necessário caractere hexadecimal para backspace.
:: Para adiciona-lo, pressione ALT+0+8 e solte a tecla ALT.
:: Então substitua os caracteres mostrados acima pelo os adequados.
findstr /a:%1 /R "^" "%~2F*"
del %2F
goto :eof

Pegar tecla pressionada[editar | editar código-fonte]

@echo off
echo Pressione alguma tecla...
call :key
echo Voce pressionou: %key%
:: P.S.: Só pega teclas de caracteres. Isto é, teclas como Shift, Enter etc. não vai retornar nada.
pause>nul
goto :eof

:key
set key=
for /f "delims=" %%. In ('xcopy /w "%~f0" "%~f0" 2^>nul') do if not defined key set "key=%%."
set "key=%key:~-1%"
goto :eof


Referências