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?


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.


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.


set PATH=%PATH%;C:\Folder;
echo %NEWVAR%
  • 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 1: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

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

  • 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 at 18:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.