No Bash eu posso criar TEMPORÁRIO variáveis de ambiente em uma linha de comando. Por exemplo
DEBUG=foo somecommand
Isso define a variável de ambiente DEBUG
mas apenas para somecommand
. Quando a linha terminar DEBUG
não está mais definido.
Posso fazer algo semelhante no processador de comandos do Windows?
Nota: Usando SET
não funciona. Isso define o ambiente atual dos processadores de comandos, não apenas o comando prestes a ser executado.
Para dar outro exemplo, aqui está um pequeno programa node.js que imprime o valor de uma única variável de ambiente
// test.js
console.log(`${process.argv[2]}='${process.env[process.argv[2]]}'`);
Vamos executá-lo no bash
$ export FOO=abc
$ node test.js FOO
FOO='abc'
Então vamos executá-lo com uma configuração temporária
$ FOO=def node test.js FOO
FOO='def'
Verifique se o FOO ainda é abc
$ echo $FOO
abc
Como posso realizar a mesma coisa no prompt de comando do Windows?
Uma maneira parece ser relançar o processador de comandos como em
cmd /S /C "set "FOO=def" & node test.js FOO"
Existe outra maneira ou é isso?
set foo=bar && echo %foo% && set foo= && echo %foo%
não funciona :(