Script de lote - Variáveis
Existem dois tipos de variáveis em arquivos em lote. Um é para parâmetros que podem ser passados quando o arquivo em lote é chamado e o outro é feito por meio do comando set.
Argumentos de linha de comando
Os scripts em lote suportam o conceito de argumentos de linha de comando em que os argumentos podem ser passados para o arquivo em lote quando chamados. Os argumentos podem ser chamados de arquivos em lote por meio das variáveis% 1,% 2,% 3 e assim por diante.
O exemplo a seguir mostra um arquivo em lote que aceita 3 argumentos de linha de comando e os exibe na tela de linha de comando.
@echo off
echo %1
echo %2
echo %3
Se o script de lote acima estiver armazenado em um arquivo chamado test.bat e formos executar o lote como
Test.bat 1 2 3
A seguir está uma captura de tela de como isso ficaria no prompt de comando quando o arquivo em lote for executado.
O comando acima produz a seguinte saída.
1
2
3
Se tivéssemos que executar o lote como
Example 1 2 3 4
A saída ainda permaneceria a mesma acima. No entanto, o quarto parâmetro seria ignorado.
Set Command
A outra maneira pela qual as variáveis podem ser inicializadas é por meio do comando 'set'. A seguir está a sintaxe do comando set.
Sintaxe
set /A variable-name=value
Onde,
variable-name é o nome da variável que você deseja definir.
value é o valor que precisa ser definido em relação à variável.
/A – Essa opção é usada se o valor precisar ser numérico por natureza.
O exemplo a seguir mostra uma maneira simples de usar o comando set.
Exemplo
@echo off
set message=Hello World
echo %message%
No trecho de código acima, uma variável chamada mensagem é definida e configurada com o valor "Hello World".
Para exibir o valor da variável, observe que a variável precisa estar entre o sinal%.
Resultado
O comando acima produz a seguinte saída.
Hello World
Trabalhando com Valores Numéricos
No script em lote, também é possível definir uma variável para conter um valor numérico. Isso pode ser feito usando a opção / A.
O código a seguir mostra uma maneira simples em que os valores numéricos podem ser definidos com a opção / A.
@echo off
SET /A a = 5
SET /A b = 10
SET /A c = %a% + %b%
echo %c%
Primeiro, estamos definindo o valor de 2 variáveis, aeb para 5 e 10, respectivamente.
Estamos adicionando esses valores e armazenando na variável c.
Finalmente, estamos exibindo o valor da variável c.
A saída do programa acima seria 15.
Todos os operadores aritméticos trabalham em arquivos em lote. O exemplo a seguir mostra que os operadores aritméticos podem ser usados em arquivos em lote.
@echo off
SET /A a = 5
SET /A b = 10
SET /A c = %a% + %b%
echo %c%
SET /A c = %a% - %b%
echo %c%
SET /A c = %b% / %a%
echo %c%
SET /A c = %b% * %a%
echo %c%
O comando acima produz a seguinte saída.
15
-5
2
50
Variáveis locais vs globais
Em qualquer linguagem de programação, existe a opção de marcar as variáveis como tendo algum tipo de escopo, ou seja, a seção do código na qual elas podem ser acessadas. Normalmente, as variáveis com escopo global podem ser acessadas em qualquer lugar a partir de um programa, enquanto as variáveis com escopo local têm um limite definido no qual podem ser acessadas.
O script DOS também tem uma definição para variáveis com escopo local e global. Por padrão, as variáveis são globais para toda a sua sessão de prompt de comando. Chame o comando SETLOCAL para tornar as variáveis locais no escopo do seu script. Depois de chamar SETLOCAL, qualquer atribuição de variável é revertida ao chamar ENDLOCAL, chamar EXIT ou quando a execução atinge o fim do arquivo (EOF) em seu script. O exemplo a seguir mostra a diferença quando as variáveis locais e globais são definidas no script.
Exemplo
@echo off
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL
Algumas coisas importantes a serem observadas sobre o programa acima.
O 'globalvar' é definido com um escopo global e está disponível em todo o script.
A variável 'var' é definida em um escopo local porque está entre um bloco 'SETLOCAL' e 'ENDLOCAL'. Portanto, esta variável será destruída assim que a instrução 'ENDLOCAL' for executada.
Resultado
O comando acima produz a seguinte saída.
13150
5
Você notará que o comando echo% var% não produzirá nada porque após a instrução ENDLOCAL, a variável 'var' não existirá mais.
Trabalhando com Variáveis de Ambiente
Se você tiver variáveis que seriam usadas em arquivos em lote, é sempre preferível usar variáveis de ambiente. Depois que a variável de ambiente é definida, ela pode ser acessada por meio do sinal%. O exemplo a seguir mostra como ver o JAVA_HOME definido em um sistema. A variável JAVA_HOME é um componente-chave normalmente usado por uma ampla variedade de aplicativos.
@echo off
echo %JAVA_HOME%
A saída mostraria o diretório JAVA_HOME, que dependeria de sistema para sistema. A seguir está um exemplo de uma saída.
C:\Atlassian\Bitbucket\4.0.1\jre