Como restringir a alteração da variável env localmente pelo arquivo em lote

0
  • Eu tenho dois arquivos de lote x.bat e y.bat.
  • Estou chamando y.bat de x.bat.
  • O arquivo y.bat define uma variável env como: set ABC =
  • Restrição é que eu não posso alterar esse arquivo Y.bat, mas quero que minha variável "ABC" seja definida como outra coisa.
  • Como posso definir "ABC" no X.bat para que não seja anulado pelo comando do conjunto de arquivos y.bat.
por RISHABH RASTOGI 25.02.2015 / 15:23

2 respostas

0

No seu batchfile defina ABC para outro var. Você pode fazer isso da seguinte maneira:

set DEF=%ABC%

um exemplo:

set ABC=testing
set DEF=%ABC%
set ABC=changed

echo %ABC%
:: prints: changed

echo %DEF%
:: prints: testing
    
por 25.02.2015 / 15:27
0

Você não pode evitar y.bat de alterar o valor na variável. As variáveis de ambiente não podem ser definidas como constantes nem marcadas como somente leitura ou protegidas contra gravação. Se o arquivo de lote chamado alterar a variável e você não puder alterar o arquivo de lote, não será possível evitar a alteração.

A única coisa que você pode evitar é a propagação das mudanças na variável para afetar o x.bat

x.bat

@echo off

    set "abc=set from x.bat"

    setlocal
    call y.bat
    endlocal

    echo %abc%

y.bat

@echo off
    set "abc=changed value"

setlocal gera uma cópia do espaço do ambiente e define essa cópia como ativa. Todas as alterações são feitas nesta cópia até o próximo endlocal que descarta a cópia e restaura o ambiente anterior.

    
por 26.02.2015 / 07:57

Tags