10

I have a batch file that spawns a shell with a modified path with the following command:

cmd /K set PATH=%PATH%;<additional path locations>

I want to set additional environment variables for the spawned shell as well. Is there any way to do that?

Hennes
  • 64,768
  • 7
  • 111
  • 168
quanticle
  • 876
  • 2
  • 9
  • 24

3 Answers3

3

You could also combine them into a single line as follows:

set A=foo & B=bar & C=baz

This way, you could avoid having to modify the original script and run it like so:

set A=foo & B=bar & C=baz & c:\path\to\foo.bat

  • 2
    When running this from an `npm`/`yarn` script, I had to prefix each variable assignment with `set`. e.g. `set A=foo & set B=bar & set C=baz & c:\path\...` – Greg K Jan 16 '19 at 18:02
2

Simply add another variable on a new line using set as shown in your example. You will also want to remove the /K switch from the first line as execution will stop after that line.

set NEWVAR=SOMETHING

will create a new variable called NEWVAR with the value SOMETHING. If you wish to keep the same behavior and keep cmd open with the /K switch just put it at the end.

example:

set PATH=%PATH%;C:\Folder;
set NEWVAR=SOMETHING
echo %NEWVAR%
John T
  • 163,373
  • 27
  • 341
  • 348
  • 1
    Thanks - that worked like I wanted it to. I put cmd /K at the end because I wanted to use the shell after it had finished executing my commands. – quanticle Aug 15 '09 at 01:10
  • 2
    You can also write a batch that makes all necessary changes to the environment and then simply start your `cmd` instance with `cmd /k setvars.cmd`. This is for example how Visual Studio sets up its command prompt. – Joey Aug 15 '09 at 12:26
0

summing up what others here posted, along with info gleaned from another post, here's what I saved into my internet_proxy_setup.bat file:

cmd /K "set http_proxy=http://proxy.mycorp.com:1234&& set https_proxy=http://proxy.mycorp.com:1235&& echo In HTTPS Proxy Shell&& cd %~dp0"

where the cd %~dp0 just changes the shell to the same directory that the .bat file is stored in

nmz787
  • 143
  • 7