Qual é a diferença entre
SETX
eSET
?
Conforme meu entendimento:
Ambos são usados para definir variáveis de ambiente
SETX
é para variáveis de usuário.
SET
é para variáveis de shell.
Qual é a diferença entre
SETX
eSET
?
Conforme meu entendimento:
Ambos são usados para definir variáveis de ambiente
SETX
é para variáveis de usuário.
SET
é para variáveis de shell.
Respostas:
Receio que não seja tão simples assim. As variáveis de ambiente não são limitadas pelo escopo, como você sugere, mas você está certo de que a vida útil do valor na variável é diferente ao comparar os verbos.
Set
modifica os valores atuais do ambiente do shell (a janela) e a alteração está disponível imediatamente, mas é temporária. A alteração não afetará outros shells em execução e, assim que você fechar o shell, o novo valor será perdido até que você execute o conjunto novamente.
setx
modifica o valor permanentemente, o que afeta todos os shells futuros, mas não modifica o ambiente dos shells já em execução. Você precisa sair do shell e reabri-lo antes que a alteração esteja disponível, mas o valor permanecerá modificado até você alterá-lo novamente.
Veja aqui um exemplo: http://batcheero.blogspot.com/2008/02/set-and-setx.html
Na verdade, podemos definir variáveis em três escopos:
1. Shell
2. Usuário
3. Sistema (Máquina) ou Global
C:\Users\977246>set /?
Displays, sets, or removes cmd.exe environment variables.
SET [variable=[string]]
variable Specifies the environment-variable name.
string Specifies a series of characters to assign to the variable.
Type SET without parameters to display the current environment variables.
C:\Users\977246>setx /?
SetX has three ways of working:
Syntax 1:
SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]
Syntax 2:
SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]
Syntax 3:
SETX [/S system [/U [domain\]user [/P [password]]]]
/F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]
Description:
Creates or modifies environment variables in the user or system
environment. Can set variables based on arguments, regkeys or
file input.
To remove the variable set value to empty string as follows
Example: setx path ""
Nas variáveis de ambiente Usuário e Sistema da GUI.
Adicionando um ponto que foi perdido por outros respondentes.
Para definir uma variável de ambiente do sistema em vez de uma variável de ambiente do usuário, basta usar a opção / m no comando setx e executá-la em um prompt de comando elevado (administrador).
setx variable value /m
Exemplo: abra o prompt de comando como administrador e execute
setx Path "%Path%;C:\Users\User\Libs" /m
Explicação: O comando acima anexará "C: \ Users \ User \ Libs" à variável de caminho já existente (variável de ambiente do sistema).
Sem o argumento / m , ele fará alterações ou criará apenas uma variável de caminho no nível do usuário.
No manual do usuário setx,
/ M Especifica que a variável deve ser definida no ambiente do sistema (HKEY_LOCAL_MACHINE). O padrão é definir a variável no ambiente HKEY_CURRENT_USER.
SET /?
eSETX /?
- isso deve lhe dar algumas idéias.