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