O comando: "SETLOCAL" está ativado Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. disponível
Os exemplos para o comando "SETLOCAL"
O
`SETLOCAL`O comando no prompt de comando do Windows é usado para definir variáveis de ambiente localmente em um arquivo em lote. Aqui estão alguns exemplos de como usar
`SETLOCAL`:
Exemplo 1: Definir variável de ambiente local:
@ECHO OFF
SETLOCAL
SET LOCAL_VARIABLE=Conteúdo
ECHO %LOCAL_VARIABLE%
Descrição: Neste exemplo, a variável de ambiente
`LOCAL_VARIABLE`dentro da área localmente limitada (através de
`SETLOCAL`e
`ENDLOCAL`) e só pode ser usado dentro deste intervalo.
Exemplo 2: Redefinir para o status anterior:
@ECHO OFF
SET GLOBALE_VARIABLE=Conteúdo_Global
SETLOCAL
SET LOCAL_VARIABLE=Conteúdo local
ECHO Local Variable: %LOCAL_VARIABLE%
ECHO Globale Variable: %GLOBALE_VARIABLE%
ENDLOCAL
ECHO Local Variable (fora da área localmente limitada): %LOCAL_VARIABLE%
Descrição: Esta é a variável de ambiente local
`LOCAL_VARIABLE`definido e usado dentro da área localmente limitada. Depois
`ENDLOCAL`o script retorna ao estado anterior e a variável local não está mais disponível fora do escopo local.
Exemplo 3: Aninhamento SETLOCAL:
@ECHO OFF
SETLOCAL
SET VARIABLE1=Valor1
ECHO Área interna: %VARIABLE1%
SETLOCAL
SET VARIABLE2=Valor2
ECHO Área externa: %VARIABLE1%, %VARIABLE2%
ENDLOCAL
ECHO Fora da área local: %VARIABLE1%, %VARIABLE2%
Descrição: É aqui que o
`SETLOCAL`-Comando aninhado duas vezes. A variável
`VARIABLE2`só é visível na área localizada interna, enquanto
`VARIABLE1`é visível nas áreas externas e internas.
Exemplo 4: Habilitando o processamento avançado de variáveis de ambiente:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Conteúdo
ECHO Antes do atraso Expansion: %VARIABLE%
SET VARIABLE=Novos conteúdos
ECHO Depois de atrasado Expansion: !VARIABLE!
Descrição: Usando
`ENABLEDELAYEDEXPANSION`variáveis de ambiente podem ter um ponto de exclamação
`!`em vez de sinais de porcentagem
`%`ser usado para expansão atrasada.
O
`SETLOCAL`O ambiente permite que variáveis sejam definidas localmente para um arquivo em lote, fazendo com que as alterações sejam aplicadas apenas a uma área limitada e não globalmente a todo o script. Isso é particularmente útil se você deseja que as alterações nas variáveis de ambiente sejam limitadas a uma seção específica do script.
"SETLOCAL" Trecho da Ajuda do Microsoft Windows
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Inicia a localização das alterações de ambiente em um arquivo em lotes.
As alterações de ambiente feitas após SETLOCAL ser emitido são específicas
do arquivo em lotes. ENDLOCAL deve ser emitido para restaurar as
configurações anteriores. Quando o final de um script em lotes é alcançado,
um
ENDLOCAL é executado para qualquer comando SETLOCAL pendente emitido
por esse script em lotes.
SETLOCAL
Se as extensões de comando estiverem ativadas, o SETLOCAL será alterado como
a seguir:
O comando em lotes SETLOCAL agora aceita argumentos opcionais:
ENABLEEXTENSIONS / DISABLEEXTENSIONS
ativa ou desativa extensões do processador de comandos.
Consulte CMD /? para obter detalhes.
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
ativa ou desativa a expansão da variável de ambiente
atrasada. Consulte SET /? para obter detalhes.
Essas modificações duram até o comando ENDLOCAL correspondente,
independentemente da sua configuração anterior ao comando SETLOCAL.
O comando SETLOCAL definirá o valor ERRORLEVEL se um argumento for
fornecido. Ele será zero se um dos dois argumentos válidos for
fornecido; caso contrário, será um. É possível usar esses scripts
em lotes para determinar se as extensões estão disponíveis usando
a seguinte técnica:
VERIFY OTHER 2>nulo
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Não é possível ativar as extensões
Isso funciona porque nas versões mais antigas do CMD.EXE, SETLOCAL NÃOT
define o valor ERRORLEVEL. O comando VERIFY com um argumento incorreto
inicializa o valor ERRORLEVEL para um valor diferente de zero.
Informações importantes, dicas para o comando "SETLOCAL"
Sim, existem alguns aspectos importantes a serem considerados quando você
`SETLOCAL`comando no prompt de comando do Windows ou em scripts em lote:
1.
Escopo limitado: `SETLOCAL`cria um escopo limitado para variáveis de ambiente. As alterações nas variáveis de ambiente dentro deste escopo não afetam o ambiente global ou outros escopos localizados. Observe que
`SETLOCAL`e
`ENDLOCAL`devem ser usados em pares.
SETLOCAL
REM ... Aqui as alterações nas variáveis de ambiente são locais
ENDLOCAL
2.
Aninhamento: Você pode
`SETLOCAL`aninhar para criar múltiplas áreas localizadas. Todos
`SETLOCAL`mas deve estar com um apropriado
`ENDLOCAL`ser encerrado.
SETLOCAL
REM Área localizada interna
SETLOCAL
REM Área localizada ainda mais profunda
ENDLOCAL
ENDLOCAL
3.
Expansão atrasada: Você pode com
`SETLOCAL ENABLEDELAYEDEXPANSION`ativar a expansão atrasada. A variável está incluída
`!`em vez de
`%`anexo. A expansão lenta permite que variáveis sejam avaliadas em tempo de execução, não apenas durante a leitura do arquivo em lote.
SETLOCAL ENABLEDELAYEDEXPANSION
SET VARIABLE=Conteúdo
ECHO Antes do atraso Expansion: %VARIABLE%
SET VARIABLE=Novos conteúdos
ECHO Depois de atrasado Expansion: !VARIABLE!
ENDLOCAL
4.
Variáveis de ambiente globais: alterações nas variáveis de ambiente que estão dentro de um
`SETLOCAL`-scope não afeta variáveis de ambiente globais fora do escopo.
SET GLOBAL=Conteúdo_Global
SETLOCAL
SET GLOBAL=Conteúdo local
ECHO Dentro da área localmente limitada: %GLOBAL%
ENDLOCAL
ECHO Fora da área local: %GLOBAL%
5.
Desfazendo alterações: Se desejar desfazer alterações em uma área localizada, basta reverter para o estado anterior
`SETLOCAL`de volta por você
`ENDLOCAL`usar.
SETLOCAL
REM Mudanças aqui
ENDLOCAL
REM Desfazer as alterações
É importante,
`SETLOCAL`e
`ENDLOCAL`devem ser usados com cuidado e em pares para garantir que as variáveis de ambiente sejam corretamente limitadas e tenham os efeitos esperados.