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 de alterações de ambiente num ficheiro batch.
As alterações de ambiente efectuadas depois de ser emitido o SETLOCAL
são locais ao ficheiro batch. O ENDLOCAL tem de ser emitido para restaurar
as definições anteriores. Quando é alcançado o fim de um script de comandos,
um ENDLOCAL implícito é executado para quaisquer comandos SETLOCAL pendentes
emitidos por esse script de comandos.
SETLOCAL
Se as extensões de comandos estiverem activadas, o SETLOCAL é alterado
da seguinte forma:
Agora, o comando de batch SETLOCAL aceita argumentos opcionais:
ENABLEEXTENSIONS / DISABLEEXTENSIONS
Activar ou desactivar extensões do processador de comandos.
Consulte CMD /? para mais detalhes.
ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION
Activar ou desactivar expansões de variáveis de ambiente
atrasadas. Consulte SET /? para mais detalhes.
Estas modificações duram até ao comando ENDLOCAL correspondente,
independentemente da sua definição antes do comando SETLOCAL.
O comando SETLOCAL definirá o valor de ERRORLEVEL se for dado um
argumento. Será zero se for dado um dos dois argumentos válidos e
um no caso contrário. Pode utilizar isto nos scripts de comandos
para determinar se as extensões estão disponíveis, utilizando a
seguinte técnica:
VERIFY OTHER 2>nul
SETLOCAL ENABLEEXTENSIONS
IF ERRORLEVEL 1 echo Não é possível activar as extensões
Isto funciona porque nas versões anteriores do CMD.EXE, o SETLOCAL não
define o valor do ERRORLEVEL. O comando VERIFY com um argumento incorrecto
inicializa o valor do ERRORLEVEL com 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.